aboutsummaryrefslogtreecommitdiff
path: root/src/gtk-dialog/gtk-logout-helper.c
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2010-02-25 16:04:43 -0500
committerKen VanDine <ken.vandine@canonical.com>2010-02-25 16:04:43 -0500
commitb10f319af43c3e770ae3bd2788b4dfd3ba12010f (patch)
treebd8a3de3ef6b669df3695b80fef184bfbff17768 /src/gtk-dialog/gtk-logout-helper.c
parentc0e6bba3332cbe1e74e0e2f60e734d43eb4937f9 (diff)
parent7309355f8339fd0cc3c149769bce5d9452bc5e44 (diff)
downloadayatana-indicator-session-b10f319af43c3e770ae3bd2788b4dfd3ba12010f.tar.gz
ayatana-indicator-session-b10f319af43c3e770ae3bd2788b4dfd3ba12010f.tar.bz2
ayatana-indicator-session-b10f319af43c3e770ae3bd2788b4dfd3ba12010f.zip
releasing version 0.2.4-0ubuntu1
Diffstat (limited to 'src/gtk-dialog/gtk-logout-helper.c')
-rw-r--r--src/gtk-dialog/gtk-logout-helper.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c
index d8aea6b..4c6614c 100644
--- a/src/gtk-dialog/gtk-logout-helper.c
+++ b/src/gtk-dialog/gtk-logout-helper.c
@@ -30,6 +30,44 @@ 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;
+ 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
session_action (LogoutDialogAction action)
{
DBusGConnection * sbus;
@@ -50,6 +88,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;
}