wayland: fix animation rendering — dispatch after scene commit
Animation loops (iconify/shade zoom) call event_flush repeatedly with wusleep delays. The scene commit returned immediately without waiting for the DRM page flip, so only the final frame was visible. After committing, flush clients and dispatch the event loop once to process the page-flip completion. This allows the next commit in the animation loop to succeed, producing smooth multi-frame animations.
This commit is contained in:
parent
9f86c6091c
commit
9752672367
|
|
@ -11,8 +11,16 @@ void wl_event_flush(void)
|
|||
{
|
||||
wl_xdisplay_flush();
|
||||
/* Commit the scene so intermediate animation frames are visible */
|
||||
if (wl_state.scene_output && wl_state.allocator)
|
||||
if (wl_state.scene_output && wl_state.allocator) {
|
||||
wlr_scene_output_commit(wl_state.scene_output, NULL);
|
||||
/* Flush the display so the frame reaches the DRM backend,
|
||||
* then dispatch to process the page-flip completion event
|
||||
* before returning. Without this, animation loops that
|
||||
* call event_flush repeatedly only show the final frame. */
|
||||
wl_display_flush_clients(wl_state.display);
|
||||
struct wl_event_loop *loop = wl_display_get_event_loop(wl_state.display);
|
||||
wl_event_loop_dispatch(loop, 0);
|
||||
}
|
||||
}
|
||||
void wl_event_flush_expose(void) {}
|
||||
void wl_event_sync(int discard)
|
||||
|
|
|
|||
Loading…
Reference in New Issue