xpra icon
Bug tracker and wiki

Opened 4 years ago

Closed 7 months ago

#1321 closed enhancement (wontfix)

scrolling for the osx shadow server

Reported by: Antoine Martin Owned by: Antoine Martin
Priority: major Milestone: 4.0
Component: platforms Version: trunk
Keywords: osx shadow scrolling Cc:

Description

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.

Attachments (2)

osx-shadow-scrolling.patch (5.5 KB) - added by Antoine Martin 4 years ago.
attempt to use CGScreenRegisterMoveCallback
osx-shadow-scrolling-v2.patch (5.6 KB) - added by Antoine Martin 7 months ago.
updated patch

Download all attachments as: .zip

Change History (6)

Changed 4 years ago by Antoine Martin

Attachment: osx-shadow-scrolling.patch added

attempt to use CGScreenRegisterMoveCallback

comment:1 Changed 4 years ago by Antoine Martin

Status: newassigned

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.

Last edited 4 years ago by Antoine Martin (previous) (diff)

comment:2 Changed 2 years ago by Antoine Martin

Milestone: 3.03.1

comment:3 Changed 18 months ago by Antoine Martin

Milestone: 3.14.0

Milestone renamed

Changed 7 months ago by Antoine Martin

updated patch

comment:4 Changed 7 months ago by Antoine Martin

Resolution: wontfix
Status: assignedclosed

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

Note: See TracTickets for help on using tickets.