[mutter] backends/kms/update: Add ability to remove result listeners



commit 4b0a10c56209bdd3109a7689bcaf92b8c4df8ca7
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Tue Oct 5 22:21:31 2021 +0200

    backends/kms/update: Add ability to remove result listeners
    
    We may need to remove a result listener once we've added it, and before
    that it ha been processed, so add support for this.
    
    Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1952>

 src/backends/native/meta-kms-update.c | 22 ++++++++++++++++++++++
 src/backends/native/meta-kms-update.h |  4 ++++
 2 files changed, 26 insertions(+)
---
diff --git a/src/backends/native/meta-kms-update.c b/src/backends/native/meta-kms-update.c
index 98fbdb67ad..f61e740d74 100644
--- a/src/backends/native/meta-kms-update.c
+++ b/src/backends/native/meta-kms-update.c
@@ -539,6 +539,28 @@ meta_kms_update_add_result_listener (MetaKmsUpdate             *update,
                                             listener);
 }
 
+void
+meta_kms_update_remove_result_listeners (MetaKmsUpdate             *update,
+                                         MetaKmsResultListenerFunc  func,
+                                         gpointer                   user_data)
+{
+  GList *l;
+
+  for (l = update->result_listeners; l;)
+    {
+      MetaKmsResultListener *listener = l->data;
+      GList *next = l->next;
+
+      if (listener->user_data == func && listener->user_data == user_data)
+        {
+          update->result_listeners =
+            g_list_delete_link (update->result_listeners, l);
+        }
+
+      l = next;
+    }
+}
+
 GList *
 meta_kms_update_take_result_listeners (MetaKmsUpdate *update)
 {
diff --git a/src/backends/native/meta-kms-update.h b/src/backends/native/meta-kms-update.h
index e63b6d8711..89f4146efd 100644
--- a/src/backends/native/meta-kms-update.h
+++ b/src/backends/native/meta-kms-update.h
@@ -150,6 +150,10 @@ void meta_kms_update_add_result_listener (MetaKmsUpdate             *update,
                                           MetaKmsResultListenerFunc  func,
                                           gpointer                   user_data);
 
+void meta_kms_update_remove_result_listeners (MetaKmsUpdate             *update,
+                                              MetaKmsResultListenerFunc  func,
+                                              gpointer                   user_data);
+
 static inline MetaFixed16
 meta_fixed_16_from_int (int16_t d)
 {


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