From 37a495ef63e4e2d721edc549e768af1cf5a54f28 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 4 Feb 2010 23:16:58 -0500 Subject: [PATCH 14/22] Add inhibitor-related signals This adds inhibitor-added/-removed signals. --- src/ck-manager.c | 24 +++++++++++++++++++++ src/ck-manager.h | 5 ++++ src/org.freedesktop.ConsoleKit.Manager.xml | 31 ++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 0 deletions(-) diff --git a/src/ck-manager.c b/src/ck-manager.c index 2fef99a..e6e1d30 100644 --- a/src/ck-manager.c +++ b/src/ck-manager.c @@ -94,6 +94,8 @@ enum { SEAT_ADDED, SEAT_REMOVED, SYSTEM_IDLE_HINT_CHANGED, + INHIBITOR_ADDED, + INHIBITOR_REMOVED, LAST_SIGNAL }; @@ -2369,6 +2371,26 @@ ck_manager_class_init (CkManagerClass *klass) g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + signals [INHIBITOR_ADDED] = + g_signal_new ("inhibitor-added", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (CkManagerClass, inhibitor_added), + NULL, + NULL, + g_cclosure_marshal_VOID__BOXED, + G_TYPE_NONE, + 1, DBUS_TYPE_G_OBJECT_PATH); + signals [INHIBITOR_REMOVED] = + g_signal_new ("inhibitor-removed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (CkManagerClass, inhibitor_removed), + NULL, + NULL, + g_cclosure_marshal_VOID__BOXED, + G_TYPE_NONE, + 1, DBUS_TYPE_G_OBJECT_PATH); g_object_class_install_property (object_class, PROP_STOPPING, @@ -2717,6 +2739,7 @@ ck_manager_inhibit (CkManager *manager, reason, cookie); g_hash_table_insert (manager->priv->inhibitors, GINT_TO_POINTER (cookie), inhibitor); + g_signal_emit (manager, signals[INHIBITOR_ADDED], 0, ck_inhibitor_peek_id (inhibitor)); dbus_g_method_return (context, cookie); @@ -2749,6 +2772,7 @@ ck_manager_uninhibit (CkManager *manager, return FALSE; } + g_signal_emit (manager, signals[INHIBITOR_REMOVED], 0, ck_inhibitor_peek_id (inhibitor)); g_hash_table_remove (manager->priv->inhibitors, GINT_TO_POINTER (cookie)); dbus_g_method_return (context); diff --git a/src/ck-manager.h b/src/ck-manager.h index d8d72c7..3d42bd0 100644 --- a/src/ck-manager.h +++ b/src/ck-manager.h @@ -54,6 +54,11 @@ typedef struct const char *sid); void (* system_idle_hint_changed) (CkManager *manager, gboolean idle_hint); + void (* inhibitor_added) (CkManager *manager, + const char *id); + void (* inhibitor_removed) (CkManager *manager, + const char *id); + } CkManagerClass; typedef enum diff --git a/src/org.freedesktop.ConsoleKit.Manager.xml b/src/org.freedesktop.ConsoleKit.Manager.xml index b90e665..51242ad 100644 --- a/src/org.freedesktop.ConsoleKit.Manager.xml +++ b/src/org.freedesktop.ConsoleKit.Manager.xml @@ -521,5 +521,36 @@ + + + + + The object path for the added inhibitor + + + + + + Emitted when an inhibitor has been added. + + + + + + + + + The object path for the removed inhibitor + + + + + Emitted when an inhibitor has been removed. + + + + + + -- 1.6.6