aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog11
-rw-r--r--src/gtk-dialog/gtk-logout-helper.c40
-rw-r--r--src/session-service.c4
-rw-r--r--src/users-service-dbus.c10
5 files changed, 62 insertions, 5 deletions
diff --git a/configure.ac b/configure.ac
index 221da2c..b3bfd8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4,7 +4,7 @@ AC_INIT(src/indicator-session.c)
AC_PREREQ(2.53)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-session, 0.2.3)
+AM_INIT_AUTOMAKE(indicator-session, 0.2.4)
AM_MAINTAINER_MODE
diff --git a/debian/changelog b/debian/changelog
index ff381c0..506ea64 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+indicator-session (0.2.4-0ubuntu1~ppa1) UNRELEASED; urgency=low
+
+ * Upstream release 0.2.4
+ * When we can't shutdown with gnome-session fallback to using
+ ConsoleKit.
+ * Detect when GPM isn't available and don't error out.
+ * Change suspend and hibernate detection property names for
+ adjustment to upower.
+
+ -- Ted Gould <ted@ubuntu.com> Thu, 25 Feb 2010 11:54:56 -0600
+
indicator-session (0.2.3-0ubuntu1) lucid; urgency=low
* Upstream release 0.2.3
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;
}
diff --git a/src/session-service.c b/src/session-service.c
index 9fb9ee7..289bff8 100644
--- a/src/session-service.c
+++ b/src/session-service.c
@@ -226,7 +226,7 @@ up_changed_cb (DBusGProxy * proxy, gpointer user_data)
G_TYPE_STRING,
UP_INTERFACE,
G_TYPE_STRING,
- "can-suspend",
+ "CanSuspend",
G_TYPE_INVALID,
G_TYPE_VALUE,
G_TYPE_INVALID);
@@ -242,7 +242,7 @@ up_changed_cb (DBusGProxy * proxy, gpointer user_data)
G_TYPE_STRING,
UP_INTERFACE,
G_TYPE_STRING,
- "can-hibernate",
+ "CanHibernate",
G_TYPE_INVALID,
G_TYPE_VALUE,
G_TYPE_INVALID);
diff --git a/src/users-service-dbus.c b/src/users-service-dbus.c
index d377089..0e5c922 100644
--- a/src/users-service-dbus.c
+++ b/src/users-service-dbus.c
@@ -1,3 +1,4 @@
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* Copyright 2009 Canonical Ltd.
*
@@ -183,7 +184,8 @@ users_service_dbus_init (UsersServiceDbus *self)
create_ck_proxy (self);
create_seat_proxy (self);
- users_loaded (priv->gdm_proxy, self);
+ if (priv->gdm_proxy)
+ users_loaded (priv->gdm_proxy, self);
}
static void
@@ -214,7 +216,7 @@ create_gdm_proxy (UsersServiceDbus *self)
{
if (error != NULL)
{
- g_error ("Unable to get DisplayManager proxy on system bus: %s", error->message);
+ g_warning ("Unable to get DisplayManager proxy on system bus: %s", error->message);
g_error_free (error);
}
@@ -679,6 +681,8 @@ users_loaded (DBusGProxy *proxy,
GError *error = NULL;
gint count;
+ g_return_if_fail (proxy != NULL);
+
service = (UsersServiceDbus *)user_data;
priv = USERS_SERVICE_DBUS_GET_PRIVATE (service);
@@ -859,6 +863,8 @@ gboolean
start_new_user_session (UsersServiceDbus *self,
UserData *user)
{
+ g_return_val_if_fail (IS_USERS_SERVICE_DBUS (self), FALSE);
+
UsersServiceDbusPrivate *priv = USERS_SERVICE_DBUS_GET_PRIVATE (self);
GError *error = NULL;
char *ssid;