From 9fa8c63b4377bcb46b8471da509ff8bd909c4bf0 Mon Sep 17 00:00:00 2001 From: Eric Koegel Date: Tue, 31 May 2016 11:39:01 +0300 Subject: Handle screensaver with it's own object (Bug #12603) Move the screensaver inhibit, heartbeat, and lock code to its own set of files we can easily share with xfce4-power-manager. Use the screensaver's dbus API if it supports it for inhibit and lock calls. Otherwise, use the heartbeat-command and LockCommand from xfpm and xfsm if available. Finally, for the lock function, fallback to trying xdg-screensaver, xflock4, and xscreensaver-command in that order. --- xfce4-session/xfsm-consolekit.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'xfce4-session/xfsm-consolekit.c') diff --git a/xfce4-session/xfsm-consolekit.c b/xfce4-session/xfsm-consolekit.c index d1dd73aa..33a995fb 100644 --- a/xfce4-session/xfsm-consolekit.c +++ b/xfce4-session/xfsm-consolekit.c @@ -23,6 +23,7 @@ #include #include +#include #include #include "xfsm-global.h" @@ -48,6 +49,7 @@ struct _XfsmConsolekit GDBusProxy *proxy; guint name_id; + XfceScreenSaver *screensaver; }; @@ -128,6 +130,8 @@ xfsm_consolekit_init (XfsmConsolekit *consolekit) name_lost, consolekit, NULL); + + consolekit->screensaver = xfce_screensaver_new (); } @@ -150,6 +154,8 @@ xfsm_consolekit_proxy_free (XfsmConsolekit *consolekit) g_object_unref (G_OBJECT (consolekit->proxy)); consolekit->proxy = NULL; } + + g_object_unref (G_OBJECT (consolekit->screensaver)); } @@ -378,14 +384,15 @@ xfsm_consolekit_can_shutdown (XfsmConsolekit *consolekit, static gboolean -lock_screen (GError **error) +lock_screen (XfsmConsolekit *consolekit, + GError **error) { XfconfChannel *channel; gboolean ret = TRUE; channel = xfsm_open_config (); if (xfconf_channel_get_bool (channel, "/shutdown/LockScreen", FALSE)) - ret = g_spawn_command_line_async ("xflock4", error); + ret = xfce_screensaver_lock (consolekit->screensaver); return ret; } @@ -409,7 +416,7 @@ xfsm_consolekit_try_suspend (XfsmConsolekit *consolekit, return FALSE; } - if (!lock_screen (error)) + if (!lock_screen (consolekit, error)) return FALSE; return xfsm_consolekit_try_sleep (consolekit, "Suspend", error); @@ -436,7 +443,7 @@ xfsm_consolekit_try_hibernate (XfsmConsolekit *consolekit, return FALSE; } - if (!lock_screen (error)) + if (!lock_screen (consolekit, error)) return FALSE; return xfsm_consolekit_try_sleep (consolekit, "Hibernate", error); -- cgit v1.2.1