[glib/wip/chergert/marshall-matters: 81/84] gdbusobjectmanager: store signal ids for re-use



commit d7c1d477bca608b68911b58f934652f883ca5093
Author: Christian Hergert <chergert redhat com>
Date:   Mon Jun 17 16:11:26 2019 -0700

    gdbusobjectmanager: store signal ids for re-use
    
    Having access to the signal-id is useful when we want to specify additional
    signal related settings (such as va_marshaller).

 gio/gdbusobjectmanager.c | 98 +++++++++++++++++++++++++++---------------------
 1 file changed, 56 insertions(+), 42 deletions(-)
---
diff --git a/gio/gdbusobjectmanager.c b/gio/gdbusobjectmanager.c
index 3ef622a33..f60182913 100644
--- a/gio/gdbusobjectmanager.c
+++ b/gio/gdbusobjectmanager.c
@@ -51,6 +51,16 @@
 typedef GDBusObjectManagerIface GDBusObjectManagerInterface;
 G_DEFINE_INTERFACE (GDBusObjectManager, g_dbus_object_manager, G_TYPE_OBJECT)
 
+enum {
+  OBJECT_ADDED,
+  OBJECT_REMOVED,
+  INTERFACE_ADDED,
+  INTERFACE_REMOVED,
+  N_SIGNALS
+};
+
+static guint signals[N_SIGNALS];
+
 static void
 g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface)
 {
@@ -63,16 +73,17 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface)
    *
    * Since: 2.30
    */
-  g_signal_new (I_("object-added"),
-                G_TYPE_FROM_INTERFACE (iface),
-                G_SIGNAL_RUN_LAST,
-                G_STRUCT_OFFSET (GDBusObjectManagerIface, object_added),
-                NULL,
-                NULL,
-                g_cclosure_marshal_VOID__OBJECT,
-                G_TYPE_NONE,
-                1,
-                G_TYPE_DBUS_OBJECT);
+  signals[OBJECT_ADDED] =
+    g_signal_new (I_("object-added"),
+                  G_TYPE_FROM_INTERFACE (iface),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GDBusObjectManagerIface, object_added),
+                  NULL,
+                  NULL,
+                  g_cclosure_marshal_VOID__OBJECT,
+                  G_TYPE_NONE,
+                  1,
+                  G_TYPE_DBUS_OBJECT);
 
   /**
    * GDBusObjectManager::object-removed:
@@ -83,16 +94,17 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface)
    *
    * Since: 2.30
    */
-  g_signal_new (I_("object-removed"),
-                G_TYPE_FROM_INTERFACE (iface),
-                G_SIGNAL_RUN_LAST,
-                G_STRUCT_OFFSET (GDBusObjectManagerIface, object_removed),
-                NULL,
-                NULL,
-                g_cclosure_marshal_VOID__OBJECT,
-                G_TYPE_NONE,
-                1,
-                G_TYPE_DBUS_OBJECT);
+  signals[OBJECT_REMOVED] =
+    g_signal_new (I_("object-removed"),
+                  G_TYPE_FROM_INTERFACE (iface),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GDBusObjectManagerIface, object_removed),
+                  NULL,
+                  NULL,
+                  g_cclosure_marshal_VOID__OBJECT,
+                  G_TYPE_NONE,
+                  1,
+                  G_TYPE_DBUS_OBJECT);
 
   /**
    * GDBusObjectManager::interface-added:
@@ -107,17 +119,18 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface)
    *
    * Since: 2.30
    */
-  g_signal_new (I_("interface-added"),
-                G_TYPE_FROM_INTERFACE (iface),
-                G_SIGNAL_RUN_LAST,
-                G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_added),
-                NULL,
-                NULL,
-                NULL,
-                G_TYPE_NONE,
-                2,
-                G_TYPE_DBUS_OBJECT,
-                G_TYPE_DBUS_INTERFACE);
+  signals[INTERFACE_ADDED] =
+    g_signal_new (I_("interface-added"),
+                  G_TYPE_FROM_INTERFACE (iface),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_added),
+                  NULL,
+                  NULL,
+                  NULL,
+                  G_TYPE_NONE,
+                  2,
+                  G_TYPE_DBUS_OBJECT,
+                  G_TYPE_DBUS_INTERFACE);
 
   /**
    * GDBusObjectManager::interface-removed:
@@ -132,17 +145,18 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface)
    *
    * Since: 2.30
    */
-  g_signal_new (I_("interface-removed"),
-                G_TYPE_FROM_INTERFACE (iface),
-                G_SIGNAL_RUN_LAST,
-                G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_removed),
-                NULL,
-                NULL,
-                NULL,
-                G_TYPE_NONE,
-                2,
-                G_TYPE_DBUS_OBJECT,
-                G_TYPE_DBUS_INTERFACE);
+  signals[INTERFACE_REMOVED] =
+    g_signal_new (I_("interface-removed"),
+                  G_TYPE_FROM_INTERFACE (iface),
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_removed),
+                  NULL,
+                  NULL,
+                  NULL,
+                  G_TYPE_NONE,
+                  2,
+                  G_TYPE_DBUS_OBJECT,
+                  G_TYPE_DBUS_INTERFACE);
 
 }
 


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