[libdazzle] macros: add dzl_clear_signal_handler()
- From: Christian Hergert <chergert src gnome org>
 
- To: commits-list gnome org
 
- Cc: 
 
- Subject: [libdazzle] macros: add dzl_clear_signal_handler()
 
- Date: Sun, 26 Nov 2017 23:17:58 +0000 (UTC)
 
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]