From e7fc43ee78947ad8e99b0766fa3538e73059e962 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 12 Oct 2009 20:08:09 -0400 Subject: [PATCH 13/21] Add more inhibit api This adds IsInhibited and GetInhibitors methods. --- data/ConsoleKit.conf | 6 +++ src/ck-manager.c | 62 ++++++++++++++++++++++++++++ src/ck-manager.h | 8 ++++ src/org.freedesktop.ConsoleKit.Manager.xml | 39 +++++++++++++++++ 4 files changed, 115 insertions(+), 0 deletions(-) diff --git a/data/ConsoleKit.conf b/data/ConsoleKit.conf index 29ac07a..b5fc755 100644 --- a/data/ConsoleKit.conf +++ b/data/ConsoleKit.conf @@ -75,6 +75,12 @@ + + priv->inhibitors); + while (g_hash_table_iter_next (&iter, (gpointer *)&cookie, (gpointer *)&inhibitor)) { + if (ck_inhibitor_peek_flags (inhibitor) & flags) { + return inhibitor; + } + } + + return NULL; +} + +gboolean +ck_manager_is_inhibited (CkManager *manager, + guint flags, + gboolean *is_inhibited, + GError *error) +{ + g_return_val_if_fail (CK_IS_MANAGER (manager), FALSE); + + if (g_hash_table_size (manager->priv->inhibitors) == 0) { + *is_inhibited = FALSE; + + return TRUE; + } + + if (find_inhibitor_with_flags (manager, flags) == NULL) { + *is_inhibited = FALSE; + } + else { + *is_inhibited = TRUE; + } + + return TRUE; +} + +gboolean +ck_manager_get_inhibitors (CkManager *manager, + GPtrArray **inhibitors, + GError *error) +{ + GHashTableIter iter; + CkInhibitor *inhibitor; + + g_return_val_if_fail (CK_IS_MANAGER (manager), FALSE); + + *inhibitors = g_ptr_array_new (); + + g_hash_table_iter_init (&iter, manager->priv->inhibitors); + while (g_hash_table_iter_next (&iter, NULL, (gpointer *)&inhibitor)) { + g_ptr_array_add (*inhibitors, g_strdup (ck_inhibitor_peek_id (inhibitor))); + } + + return TRUE; +} + diff --git a/src/ck-manager.h b/src/ck-manager.h index 87bb839..d8d72c7 100644 --- a/src/ck-manager.h +++ b/src/ck-manager.h @@ -96,6 +96,14 @@ gboolean ck_manager_inhibit (CkManager gboolean ck_manager_uninhibit (CkManager *manager, guint cookie, DBusGMethodInvocation *context); +gboolean ck_manager_is_inhibited (CkManager *manager, + guint flags, + gboolean *is_inhibited, + GError *error); +gboolean ck_manager_get_inhibitors (CkManager *manager, + GPtrArray **inhibitors, + GError *error); + /* Authoritative properties */ gboolean ck_manager_open_session (CkManager *manager, diff --git a/src/org.freedesktop.ConsoleKit.Manager.xml b/src/org.freedesktop.ConsoleKit.Manager.xml index f12ce69..b90e665 100644 --- a/src/org.freedesktop.ConsoleKit.Manager.xml +++ b/src/org.freedesktop.ConsoleKit.Manager.xml @@ -433,6 +433,45 @@ + + + + Flags that specify what should be inhibited + + + + + TRUE if inhibited + + + + + This method returns TRUE if any of the operations indicated by the flags are inhibited. + + + + + + + + An array of inhibitor IDs + + + + + + Gets a list of all the inhibitors that are currently known. + + + Each inhibitor ID is a D-Bus object path for an object that implements the Inhibitor interface. + + + org.freedesktop.ConsoleKit.Inhibitor + + + + + -- 1.6.5.rc2