From 02ab93a720729796e63b66a521edd647c26182cb Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 24 Feb 2010 11:26:24 -0600 Subject: Adding a fallback for now gnome-session detected. --- src/gtk-dialog/gtk-logout-helper.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/gtk-dialog/gtk-logout-helper.c') 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 @@ -29,6 +29,33 @@ with this program. If not, see . #include "ck-pk-helper.h" #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) { @@ -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; } -- cgit v1.2.3 From 8985b002f45ca55cabf32225c7a483ea36905c86 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 24 Feb 2010 11:39:50 -0600 Subject: Adding in shutdown and restart --- src/gtk-dialog/gtk-logout-helper.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/gtk-dialog/gtk-logout-helper.c') diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c index 29f0add..4c6614c 100644 --- a/src/gtk-dialog/gtk-logout-helper.c +++ b/src/gtk-dialog/gtk-logout-helper.c @@ -44,16 +44,27 @@ consolekit_fallback (LogoutDialogAction action) } switch (action) { - case LOGOUT_DIALOG_LOGOUT: { + 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; - } + case LOGOUT_DIALOG_SHUTDOWN: + dbus_g_proxy_call_no_reply(proxy, + "Stop", + G_TYPE_INVALID); + break; + case LOGOUT_DIALOG_RESTART: + dbus_g_proxy_call_no_reply(proxy, + "Restart", + G_TYPE_INVALID); + break; default: g_warning("Unknown action"); break; } g_object_unref(proxy); + + return; } static void -- cgit v1.2.3 From 8689698b0545046a871730b24ad0eef6414dd990 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 25 Feb 2010 16:38:38 -0600 Subject: Switching to getting a reply --- src/gtk-dialog/gtk-logout-helper.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/gtk-dialog/gtk-logout-helper.c') diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c index 4c6614c..7973bfc 100644 --- a/src/gtk-dialog/gtk-logout-helper.c +++ b/src/gtk-dialog/gtk-logout-helper.c @@ -29,6 +29,15 @@ with this program. If not, see . #include "ck-pk-helper.h" #include "gconf-helper.h" +static void +console_kit_action_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) +{ + g_return_if_fail(DBUS_IS_G_PROXY(proxy)); + g_return_if_fail(call != NULL); + + +} + static void consolekit_fallback (LogoutDialogAction action) { @@ -48,14 +57,20 @@ consolekit_fallback (LogoutDialogAction action) g_warning("Unable to fallback to ConsoleKit for logout as it's a session issue. We need some sort of session handler."); break; case LOGOUT_DIALOG_SHUTDOWN: - dbus_g_proxy_call_no_reply(proxy, - "Stop", - G_TYPE_INVALID); + dbus_g_proxy_begin_call(proxy, + "Stop", + console_kit_action_cb, + NULL, /* data */ + NULL, /* destroy notifier */ + G_TYPE_INVALID); break; case LOGOUT_DIALOG_RESTART: - dbus_g_proxy_call_no_reply(proxy, - "Restart", - G_TYPE_INVALID); + dbus_g_proxy_begin_call(proxy, + "Restart", + console_kit_action_cb, + NULL, /* data */ + NULL, /* destroy notifier */ + G_TYPE_INVALID); break; default: g_warning("Unknown action"); -- cgit v1.2.3 From d605a1086d9fd4ca887c42c237aec5c246cda749 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 25 Feb 2010 16:42:30 -0600 Subject: can't really use async as we dont' have a mainloop here --- src/gtk-dialog/gtk-logout-helper.c | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) (limited to 'src/gtk-dialog/gtk-logout-helper.c') diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c index 7973bfc..c8635e6 100644 --- a/src/gtk-dialog/gtk-logout-helper.c +++ b/src/gtk-dialog/gtk-logout-helper.c @@ -29,15 +29,6 @@ with this program. If not, see . #include "ck-pk-helper.h" #include "gconf-helper.h" -static void -console_kit_action_cb (DBusGProxy * proxy, DBusGProxyCall * call, void * data) -{ - g_return_if_fail(DBUS_IS_G_PROXY(proxy)); - g_return_if_fail(call != NULL); - - -} - static void consolekit_fallback (LogoutDialogAction action) { @@ -52,25 +43,23 @@ consolekit_fallback (LogoutDialogAction action) return; } + GError * error = NULL; + 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; case LOGOUT_DIALOG_SHUTDOWN: - dbus_g_proxy_begin_call(proxy, - "Stop", - console_kit_action_cb, - NULL, /* data */ - NULL, /* destroy notifier */ - G_TYPE_INVALID); + dbus_g_proxy_call(proxy, + "Stop", + &error, + G_TYPE_INVALID); break; case LOGOUT_DIALOG_RESTART: - dbus_g_proxy_begin_call(proxy, - "Restart", - console_kit_action_cb, - NULL, /* data */ - NULL, /* destroy notifier */ - G_TYPE_INVALID); + dbus_g_proxy_call(proxy, + "Restart", + &error, + G_TYPE_INVALID); break; default: g_warning("Unknown action"); @@ -79,6 +68,11 @@ consolekit_fallback (LogoutDialogAction action) g_object_unref(proxy); + if (error != NULL) { + g_error("Unable to signal ConsoleKit: %s", error->message); + g_error_free(error); + } + return; } -- cgit v1.2.3