[libdazzle] macros: add dzl_clear_signal_handler()



commit 819552a2994d76e5b62bbdc624c5b7e03986a4b7
Author: Christian Hergert <chergert redhat com>
Date:   Sun Nov 26 15:17:21 2017 -0800

    macros: add dzl_clear_signal_handler()
    
    This is useful if we want a re-entrant safe way to clear a signal handler
    from a field.

 src/util/dzl-macros.h |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)
---
diff --git a/src/util/dzl-macros.h b/src/util/dzl-macros.h
index 7238f0b..ca9ed27 100644
--- a/src/util/dzl-macros.h
+++ b/src/util/dzl-macros.h
@@ -37,6 +37,18 @@ G_BEGIN_DECLS
 #define dzl_set_weak_pointer(ptr,obj) \
   
((obj!=*(ptr))?(dzl_clear_weak_pointer(ptr),*(ptr)=obj,((obj)?g_object_add_weak_pointer((GObject*)obj,(gpointer*)ptr),NULL:NULL),1):0)
 
+static inline void
+dzl_clear_signal_handler (gpointer  object,
+                          gulong   *location_of_handler)
+{
+  if (*location_of_handler != 0)
+    {
+      gulong handler = *location_of_handler;
+      *location_of_handler = 0;
+      g_signal_handler_disconnect (object, handler);
+    }
+}
+
 static inline gboolean
 dzl_str_empty0 (const gchar *str)
 {


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