From 6f9130d18604742782fed3553340e1f5d7813fcb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 12 Oct 2009 20:13:39 -0400 Subject: [PATCH 14/21] 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 94c7ece..9b6afd9 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 }; @@ -2355,6 +2357,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, @@ -2699,6 +2721,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); @@ -2731,6 +2754,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.5.rc2