diff options
author | Martin Pitt <martinpitt@gnome.org> | 2013-03-21 07:10:18 +0100 |
---|---|---|
committer | Martin Pitt <martinpitt@gnome.org> | 2013-03-21 07:10:18 +0100 |
commit | ff39d23ff4dc5735dedcb7d0942bd1ebfec0afb7 (patch) | |
tree | d36d5b68105caf1f9d1e7ae9f6448daf52d8f2ff | |
parent | 830c5c5a4e8ef9dc9caf181c39418aab9f30a760 (diff) | |
download | upower-ff39d23ff4dc5735dedcb7d0942bd1ebfec0afb7.tar.gz |
Fix test for logind availability
sd_booted() is not an appropriate check for whether we should talk to logind,
test for /run/systemd/seats/ instead.
For details, see:
<https://mail.gnome.org/archives/desktop-devel-list/2013-March/msg00092.html>
-rw-r--r-- | src/linux/up-backend.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/src/linux/up-backend.c b/src/linux/up-backend.c index 60520a4..b9f75f5 100644 --- a/src/linux/up-backend.c +++ b/src/linux/up-backend.c @@ -50,14 +50,13 @@ #include <dbus/dbus-glib-lowlevel.h> #ifdef ENABLE_DEPRECATED -#ifdef HAVE_SYSTEMD -#include <systemd/sd-daemon.h> + +#define LOGIND_AVAILABLE() (access("/run/systemd/seats/", F_OK) >= 0) #define SD_HIBERNATE_COMMAND "gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.Hibernate 'true'" #define SD_SUSPEND_COMMAND "gdbus call --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --method org.freedesktop.login1.Manager.Suspend 'true'" #endif -#endif static void up_backend_class_init (UpBackendClass *klass); static void up_backend_init (UpBackend *backend); @@ -594,12 +593,10 @@ out: const gchar * up_backend_get_suspend_command (UpBackend *backend) { -#ifdef HAVE_SYSTEMD - if (sd_booted ()) + if (LOGIND_AVAILABLE()) return SD_SUSPEND_COMMAND; else -#endif - return UP_BACKEND_SUSPEND_COMMAND; + return UP_BACKEND_SUSPEND_COMMAND; } /** @@ -608,23 +605,19 @@ up_backend_get_suspend_command (UpBackend *backend) const gchar * up_backend_get_hibernate_command (UpBackend *backend) { -#ifdef HAVE_SYSTEMD - if (sd_booted ()) + if (LOGIND_AVAILABLE()) return SD_HIBERNATE_COMMAND; else -#endif - return UP_BACKEND_HIBERNATE_COMMAND; + return UP_BACKEND_HIBERNATE_COMMAND; } gboolean up_backend_emits_resuming (UpBackend *backend) { -#ifdef HAVE_SYSTEMD - if (sd_booted ()) + if (LOGIND_AVAILABLE()) return TRUE; else -#endif - return FALSE; + return FALSE; } #endif @@ -705,15 +698,13 @@ up_backend_init (UpBackend *backend) backend->priv->managed_devices = up_device_list_new (); #ifdef ENABLE_DEPRECATED -#ifdef HAVE_SYSTEMD - if (sd_booted ()) { + if (LOGIND_AVAILABLE()) { DBusGConnection *bus; bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL); backend->priv->connection = dbus_g_connection_get_connection (bus); dbus_connection_add_filter (backend->priv->connection, message_filter, backend, NULL); } #endif -#endif } /** |