mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-11-04 00:33:12 +00:00
#16827 made FrameRaw copy each frame while the Image is still valid, and then copy it a second time into the capturer in take(). Swap the owned buffer into dst instead: both callers own dst and only read it until their next call, so the two buffers alternate and take() holds the lock for constant time. A taken frame is copied once, as before #16827. Release the buffer whenever capture is enabled or disabled. FrameRaw is global, so it would otherwise keep a full frame after capture stops. Note why the would_block_if_equal check never fires, so that nobody revives it by accident. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>