Xpra: Ticket #1321: scrolling for the osx shadow server

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.



Wed, 15 Feb 2017 09:10:32 GMT - Antoine Martin: attachment set

attempt to use CGScreenRegisterMoveCallback


Wed, 15 Feb 2017 09:14:26 GMT - Antoine Martin: status changed

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.


Wed, 28 Mar 2018 05:18:47 GMT - Antoine Martin: milestone changed


Wed, 20 Mar 2019 05:06:15 GMT - Antoine Martin: milestone changed

Milestone renamed


Sat, 29 Feb 2020 07:14:51 GMT - Antoine Martin: attachment set

updated patch


Sat, 29 Feb 2020 07:18:04 GMT - Antoine Martin: status changed; resolution set

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


Sat, 23 Jan 2021 05:21:04 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1321