diff options
author | Ted Gould <ted@gould.cx> | 2010-02-24 11:26:24 -0600 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-24 11:26:24 -0600 |
commit | 02ab93a720729796e63b66a521edd647c26182cb (patch) | |
tree | 22dafc207a916f808f2f2263ede5a3d7db504773 /src/gtk-dialog | |
parent | d0eee8bb58912b646c6ff16098f63079e955c654 (diff) | |
download | ayatana-indicator-session-02ab93a720729796e63b66a521edd647c26182cb.tar.gz ayatana-indicator-session-02ab93a720729796e63b66a521edd647c26182cb.tar.bz2 ayatana-indicator-session-02ab93a720729796e63b66a521edd647c26182cb.zip |
Adding a fallback for now gnome-session detected.
Diffstat (limited to 'src/gtk-dialog')
-rw-r--r-- | src/gtk-dialog/gtk-logout-helper.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c index d8aea6b..29f0add 100644 --- a/src/gtk-dialog/gtk-logout-helper.c +++ b/src/gtk-dialog/gtk-logout-helper.c @@ -30,6 +30,33 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include "gconf-helper.h" static void +consolekit_fallback (LogoutDialogAction action) +{ + DBusGConnection * sbus = dbus_g_bus_get(DBUS_BUS_SYSTEM, NULL); + g_return_if_fail(sbus != NULL); /* worst case */ + DBusGProxy * proxy = dbus_g_proxy_new_for_name(sbus, "org.freedesktop.ConsoleKit", + "/org/freedesktop/ConsoleKit/Manager", + "org.freedesktop.ConsoleKit.Manager"); + + if (proxy == NULL) { + g_warning("Unable to get consolekit proxy"); + return; + } + + switch (action) { + case LOGOUT_DIALOG_LOGOUT: { + g_warning("Unable to fallback to ConsoleKit for logout as it's a session issue. We need some sort of session handler."); + break; + } + default: + g_warning("Unknown action"); + break; + } + + g_object_unref(proxy); +} + +static void session_action (LogoutDialogAction action) { DBusGConnection * sbus; @@ -50,6 +77,8 @@ session_action (LogoutDialogAction action) if (sm_proxy == NULL) { g_warning("Unable to get DBus proxy to SessionManager interface: %s", error->message); g_error_free(error); + + consolekit_fallback(action); return; } |