[gnome-settings-daemon] Use systemd to shutdown if power runs low
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] Use systemd to shutdown if power runs low
- Date: Mon, 23 Jan 2012 15:00:12 +0000 (UTC)
commit bdc1a6439bcc7965a1dcd40b4130d250acc527aa
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Dec 23 23:04:58 2011 -0500
Use systemd to shutdown if power runs low
When --enable-systemd is passed to configure, talk to logind
instead of ConsoleKit to power the machine off.
https://bugzilla.gnome.org/show_bug.cgi?id=666787
plugins/power/gsd-power-manager.c | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+), 0 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 8d12c2c..0809daa 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -52,6 +52,10 @@
#define CONSOLEKIT_DBUS_PATH_MANAGER "/org/freedesktop/ConsoleKit/Manager"
#define CONSOLEKIT_DBUS_INTERFACE_MANAGER "org.freedesktop.ConsoleKit.Manager"
+#define SYSTEMD_DBUS_NAME "org.freedesktop.login1"
+#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1"
+#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager"
+
#define UPOWER_DBUS_NAME "org.freedesktop.UPower"
#define UPOWER_DBUS_PATH "/org/freedesktop/UPower"
#define UPOWER_DBUS_PATH_KBDBACKLIGHT "/org/freedesktop/UPower/KbdBacklight"
@@ -1955,6 +1959,26 @@ gnome_session_shutdown (void)
g_object_unref (proxy);
}
+#ifdef HAVE_SYSTEMD
+
+static void
+systemd_stop (void)
+{
+ GDBusConnection *bus;
+
+ bus = g_bus_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+ g_dbus_connection_call (bus,
+ SYSTEMD_DBUS_NAME,
+ SYSTEMD_DBUS_PATH,
+ SYSTEMD_DBUS_INTERFACE,
+ "PowerOff",
+ g_variant_new ("(b)", FALSE),
+ NULL, 0, G_MAXINT, NULL, NULL, NULL);
+ g_object_unref (bus);
+}
+
+#else
+
static void
consolekit_stop_cb (GObject *source_object,
GAsyncResult *res,
@@ -2003,6 +2027,7 @@ consolekit_stop (void)
consolekit_stop_cb, NULL);
g_object_unref (proxy);
}
+#endif
static void
upower_sleep_cb (GObject *source_object,
@@ -2055,7 +2080,11 @@ do_power_action_type (GsdPowerManager *manager,
/* this is only used on critically low battery where
* hibernate is not available and is marginally better
* than just powering down the computer mid-write */
+#ifdef HAVE_SYSTEMD
+ systemd_stop ();
+#else
consolekit_stop ();
+#endif
break;
case GSD_POWER_ACTION_BLANK:
ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]