Highlights
🐛 serve-vnc: no more mosaic/smear and fps collapse when a client is attached during motion
Under on-screen motion with a VNC client connected, serve-vnc would smear (blocky mosaic) and drop to a crawl. The cause was host-side, not the device or decoder: each full-frame RFB Raw update is width*height*4 (~14 MB at 1264×2752), and writing it through the asyncio StreamWriter ran the copy+flush on the event loop, starving the RTP socket's recv. The kernel receive buffer then overflowed and dropped incoming media packets, breaking HEVC references and collapsing the frame rate (measured: RTP ingress fell from ~60 fps to <15 fps the instant a client attached during motion).
The framebuffer is now sent from a thread-pool executor over a dup() of the client socket, so the send releases the GIL and the event loop keeps draining RTP. No flags or protocol changes — existing serve-vnc usage just stops smearing:
pymobiledevice3 developer core-device display serve-vncWhat's Changed
- cd24692 serve-vnc: send framebuffer off the event loop to stop RTP receive starvation (#1767) (@doronz88)
Full Changelog: v9.35.0...v9.35.1