kms/impl-device: Treat handling update as flushing

Primary plane updates were forgetting to do this in OnscreenNative, but
rather than do it for each post there we should simply do it for each
post.

This fixes cursor stutter in the fallback path (not using deadline timers)
where needs_flush_crtcs would remain populated but CRTC_NEEDS_FLUSH would
never be emitted, because handle_flush hadn't been called for the last
post.

This is safe as the current use of scheduled flushing is only for cursor
updates, and since cursor updates happen on the same thread as processing,
and due to the fact that we always use the most up to date cursor position
when flushing, we never risk leaving an old cursor state unflushed.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3138>
This commit is contained in:
Daniel van Vugt 2023-08-01 17:40:43 +08:00
parent 7493ed39ce
commit b516b009fa

View File

@ -1515,6 +1515,8 @@ meta_kms_impl_device_handle_update (MetaKmsImplDevice *impl_device,
disarm_crtc_frame_deadline_timer (crtc_frame); disarm_crtc_frame_deadline_timer (crtc_frame);
} }
meta_kms_device_handle_flush (priv->device, latch_crtc);
feedback = do_process (impl_device, latch_crtc, update, flags); feedback = do_process (impl_device, latch_crtc, update, flags);
meta_kms_feedback_unref (feedback); meta_kms_feedback_unref (feedback);
return; return;