From af0ca0cdc2a15036ca7f0a90be374e1436c660cf Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Mon, 22 Jan 2024 12:45:37 +0100 Subject: [PATCH] kms/cursor-manager: Create CrtcStateImpls for all active CRTCs even if they don't have a cursor plane. This way we can just use the object. Updating the cursor plane then just looks at the cursor_plane field to skips updates when there is none. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3254 Fixes: cc7bca073 ("crtc/kms: Dynamically assign primary and cursor planes") Part-of: --- src/backends/native/meta-kms-cursor-manager.c | 6 ++++-- src/backends/native/meta-renderer-native.c | 2 -- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backends/native/meta-kms-cursor-manager.c b/src/backends/native/meta-kms-cursor-manager.c index 646084877..6873000dc 100644 --- a/src/backends/native/meta-kms-cursor-manager.c +++ b/src/backends/native/meta-kms-cursor-manager.c @@ -333,6 +333,10 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl, crtc_state_impl = find_crtc_state (cursor_manager_impl, crtc); g_return_val_if_fail (crtc_state_impl, update); + cursor_plane = crtc_state_impl->cursor_plane; + if (!cursor_plane) + return update; + if (!crtc_state_impl->cursor_invalidated) return update; @@ -368,8 +372,6 @@ maybe_update_cursor_plane (MetaKmsCursorManagerImpl *cursor_manager_impl, meta_kms_update_realize (update, impl_device); } - cursor_plane = crtc_state_impl->cursor_plane; - if (should_have_cursor) { int width, height; diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c index 78bde68ff..dc08824c1 100644 --- a/src/backends/native/meta-renderer-native.c +++ b/src/backends/native/meta-renderer-native.c @@ -1128,8 +1128,6 @@ meta_renderer_native_queue_modes_reset (MetaRendererNative *renderer_native) crtc_kms = META_CRTC_KMS (crtc); kms_plane = meta_crtc_kms_get_assigned_cursor_plane (crtc_kms); - if (!kms_plane) - continue; kms_crtc = meta_crtc_kms_get_kms_crtc (crtc_kms); clutter_stage_view_get_layout (stage_view, &view_layout); -- 2.43.0