Skip to content

xwayland: correctly report PresentCompleteModeCopy

Erik Kurzinger requested to merge ekurzinger/xserver:present-fix into master

After executing a PresentPixmap request using the copy path, Xwayland will clear the vblank's pixmap field and re-queue it for the next msc so that on the next frame a PresentCompleteNotify event will be delivered to the client by present_execute_post.

While this does work, since the pixmap field of the vblank will be NULL when present_execute_post is called, the mode reported in the event will always be PresentCompleteModeSkip, even if the request was actually executed with a copy.

To fix this, we introduce a new "copy_executed" flag in the xwl_present_event struct. If xwl_present_execute sees that this flag is set, it will fall straight through to present_execute_post like it does if the window or pixmap is NULL. So, after executing a request with present_execute_copy, instead of clearing the pixmap field we will set the copy_executed flag to true. This will cause present_execute_post to report the correct completion mode to the client when the PresentCompleteNotify event is delivered on the next frame.

Edited by Erik Kurzinger

Merge request reports