[mutter] kms/impl-device/atomic: Discard pending page flip datas on finalize



commit 1af874fca64ba2a169cac06a055ee701965bf94b
Author: Jonas Ã…dahl <jadahl gmail com>
Date:   Sun Apr 11 01:39:54 2021 +0200

    kms/impl-device/atomic: Discard pending page flip datas on finalize
    
    This is so page flip listeners can clean up any references attached to a
    page flip.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1822>

 src/backends/native/meta-kms-impl-device-atomic.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
---
diff --git a/src/backends/native/meta-kms-impl-device-atomic.c 
b/src/backends/native/meta-kms-impl-device-atomic.c
index 27f52b2716..d7c32a2798 100644
--- a/src/backends/native/meta-kms-impl-device-atomic.c
+++ b/src/backends/native/meta-kms-impl-device-atomic.c
@@ -999,12 +999,28 @@ meta_kms_impl_device_atomic_discard_pending_page_flips (MetaKmsImplDevice *impl_
 {
 }
 
+static gboolean
+dispose_page_flip_data (gpointer key,
+                        gpointer value,
+                        gpointer user_data)
+{
+  MetaKmsPageFlipData *page_flip_data = value;
+
+  meta_kms_page_flip_data_discard_in_impl (page_flip_data, NULL);
+
+  return TRUE;
+}
+
 static void
 meta_kms_impl_device_atomic_finalize (GObject *object)
 {
   MetaKmsImplDeviceAtomic *impl_device_atomic =
     META_KMS_IMPL_DEVICE_ATOMIC (object);
 
+  g_hash_table_foreach_remove (impl_device_atomic->page_flip_datas,
+                               dispose_page_flip_data,
+                               NULL);
+
   g_hash_table_unref (impl_device_atomic->page_flip_datas);
 
   G_OBJECT_CLASS (meta_kms_impl_device_atomic_parent_class)->finalize (object);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]