Follow up from #1232, osx has an API to give us those rectangles: CGScreenUpdateMoveCallback. It shouldn't be too hard to add this callback to the osx shadow server, it will be a little bit more difficult to bypass most of the screen damage logic to go straight to the "scrolling" encoder.
attempt to use CGScreenRegisterMoveCallback
The patch above fails with a cryptic error message:
SystemError: error return without exception set.
Maybe we'll need to use Cython to get this to work. PITA.
Even with the latest pyobjc 6.1 and the refreshed patch, registering for the callback fails:
Traceback (most recent call last): File "/Users/antoine/Desktop/Xpra.app/Contents/Resources/lib/python/xpra/server/shadow/shadow_server_base.py", line 431, in _process_map_window self.start_refresh(wid) File "/Users/antoine/Desktop/Xpra.app/Contents/Resources/lib/python/xpra/platform/darwin/shadow_server.py", line 162, in start_refresh err = CG.CGScreenRegisterMoveCallback(self.screen_move_callback, None) SystemError: <built-in function CGScreenRegisterMoveCallback> returned NULL without setting an error
And this API is deprecated anyway, in favour of the Quartz Display Streaming API
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1321