From 14e18de90d418e2bb33f5e0621162feb268e588f Mon Sep 17 00:00:00 2001 From: Daniel van Vugt Date: Thu, 28 Mar 2024 17:51:21 +0800 Subject: [PATCH] backends/native: Add fake cursor plane using impl_device's crtcs Because `meta_kms_impl_device_simple_initable_init` is called in the middle of `meta_kms_device_new`, the crtcs list for `MetaKmsDevice` has not been populated yet. And thus the loop to detect missing cursor planes and create fake ones never iterated. But the crtcs list does already exist in `MetaKmsImplDevice` so iterate over that instead. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3264 Part-of: --- src/backends/native/meta-kms-impl-device-simple.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backends/native/meta-kms-impl-device-simple.c b/src/backends/native/meta-kms-impl-device-simple.c index 0e9dbaced..9c46bbe0e 100644 --- a/src/backends/native/meta-kms-impl-device-simple.c +++ b/src/backends/native/meta-kms-impl-device-simple.c @@ -1832,7 +1832,6 @@ meta_kms_impl_device_simple_initable_init (GInitable *initable, MetaKmsImplDeviceSimple *impl_device_simple = META_KMS_IMPL_DEVICE_SIMPLE (initable); MetaKmsImplDevice *impl_device = META_KMS_IMPL_DEVICE (impl_device_simple); - MetaKmsDevice *device = meta_kms_impl_device_get_device (impl_device); GList *l; if (!initable_parent_iface->init (initable, cancellable, error)) @@ -1847,11 +1846,11 @@ meta_kms_impl_device_simple_initable_init (GInitable *initable, NULL, (GDestroyNotify) cached_mode_set_free); - for (l = meta_kms_device_get_crtcs (device); l; l = l->next) + for (l = meta_kms_impl_device_peek_crtcs (impl_device); l; l = l->next) { MetaKmsCrtc *crtc = l->data; - if (meta_kms_device_has_cursor_plane_for (device, crtc)) + if (meta_kms_impl_device_has_cursor_plane_for (impl_device, crtc)) continue; meta_topic (META_DEBUG_KMS, @@ -1859,9 +1858,9 @@ meta_kms_impl_device_simple_initable_init (GInitable *initable, meta_kms_crtc_get_id (crtc), meta_kms_impl_device_get_path (impl_device)); - meta_kms_device_add_fake_plane_in_impl (device, - META_KMS_PLANE_TYPE_CURSOR, - crtc); + meta_kms_impl_device_add_fake_plane (impl_device, + META_KMS_PLANE_TYPE_CURSOR, + crtc); } g_message ("Added device '%s' (%s) using non-atomic mode setting.",