diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c index 1da8ffc71..4bbb9bc45 100644 --- a/src/backends/native/meta-kms-impl-device.c +++ b/src/backends/native/meta-kms-impl-device.c @@ -1786,6 +1786,11 @@ meta_kms_impl_device_handle_update (MetaKmsImplDevice *impl_device, meta_kms_device_handle_flush (priv->device, latch_crtc); feedback = do_process (impl_device, latch_crtc, update, flags); + + if (meta_kms_feedback_did_pass (feedback) && + crtc_frame->deadline.armed) + disarm_crtc_frame_deadline_timer (crtc_frame); + meta_kms_feedback_unref (feedback); return; diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c index 29606cb6c..229aed375 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -1759,11 +1759,15 @@ meta_onscreen_native_before_redraw (CoglOnscreen *onscreen, ClutterFrame *frame) { MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen); - MetaCrtcKms *crtc_kms = META_CRTC_KMS (onscreen_native->crtc); - MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); - meta_kms_device_await_flush (meta_kms_crtc_get_device (kms_crtc), - kms_crtc); + if (meta_get_debug_paint_flags () & META_DEBUG_PAINT_SYNC_CURSOR_PRIMARY) + { + MetaCrtcKms *crtc_kms = META_CRTC_KMS (onscreen_native->crtc); + MetaKmsCrtc *kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); + + meta_kms_device_await_flush (meta_kms_crtc_get_device (kms_crtc), kms_crtc); + } + maybe_update_frame_sync (onscreen_native, frame); } diff --git a/src/meta/util.h b/src/meta/util.h index ca8ca2ade..91ca6a836 100644 --- a/src/meta/util.h +++ b/src/meta/util.h @@ -51,11 +51,14 @@ void meta_fatal (const char *format, * MetaDebugPaintFlag: * @META_DEBUG_PAINT_NONE: default * @META_DEBUG_PAINT_OPAQUE_REGION: paint opaque regions + * @META_DEBUG_PAINT_SYNC_CURSOR_PRIMARY: make cursor updates await compositing + * frames */ typedef enum { META_DEBUG_PAINT_NONE = 0, META_DEBUG_PAINT_OPAQUE_REGION = 1 << 0, + META_DEBUG_PAINT_SYNC_CURSOR_PRIMARY = 1 << 1, } MetaDebugPaintFlag; META_EXPORT