Skip to content

[Backport to Xwayland 21.1] xwayland: Always hook up frame_callback_list in xwl_present_queue_vblank

Even if there's no pending frame callback yet.

Without this, if there was no pending frame callback yet in xwl_present_queue_vblank, xwl_present_msc_bump would only get called from xwl_present_timer_callback, resulting in the MSC ticking at ~58 Hertz.

Doing this requires some adjustments elsewhere:

  1. xwl_present_reset_timer needs to check for a pending frame callback as well.
  2. xwl_window_create_frame_callback needs to call xwl_present_reset_timer for all child windows hooked up to frame_callback_list, to make sure the timer length takes the pending frame callback into account.
  3. xwl_present_flip needs to hook up the window to frame_callback_list before calling xwl_window_create_frame_callback, for 2. to work.

Closes: #1309 (closed) Fixes: 9b31358c ("xwayland: Use frame callbacks for Present vblank events") Reviewed-by: Olivier Fourdan (cherry picked from commit 9e5a3796)

Merge request reports