[gnome-settings-daemon] power: Lock the screen before allowing the computer to sleep, if configured to do so
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] power: Lock the screen before allowing the computer to sleep, if configured to do so
- Date: Wed, 13 Jul 2011 10:43:46 +0000 (UTC)
commit 91856ea80a8ce1a18e68f1459e9bffe09dd785fc
Author: Richard Hughes <richard hughsie com>
Date: Tue Jul 5 10:15:10 2011 +0100
power: Lock the screen before allowing the computer to sleep, if configured to do so
plugins/power/gsd-power-manager.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
index 19c44d7..540c50d 100644
--- a/plugins/power/gsd-power-manager.c
+++ b/plugins/power/gsd-power-manager.c
@@ -127,6 +127,7 @@ struct GsdPowerManagerPrivate
{
gboolean lid_is_closed;
GSettings *settings;
+ GSettings *settings_screensaver;
UpClient *up_client;
GDBusNodeInfo *introspection_data;
GDBusConnection *connection;
@@ -2079,6 +2080,27 @@ out:
}
static void
+upower_notify_sleep_cb (UpClient *client,
+ UpSleepKind sleep_kind,
+ GsdPowerManager *manager)
+{
+ gboolean do_lock;
+
+ do_lock = g_settings_get_boolean (manager->priv->settings_screensaver,
+ "lock-enabled");
+ if (!do_lock)
+ return;
+
+ if (manager->priv->screensaver_proxy != NULL) {
+ g_debug ("doing gnome-screensaver lock");
+ g_dbus_proxy_call (manager->priv->screensaver_proxy,
+ "Lock",
+ NULL, G_DBUS_CALL_FLAGS_NONE, -1,
+ NULL, NULL, NULL);
+ }
+}
+
+static void
upower_notify_resume_cb (UpClient *client,
UpSleepKind sleep_kind,
GsdPowerManager *manager)
@@ -2121,7 +2143,10 @@ gsd_power_manager_init (GsdPowerManager *manager)
manager->priv->settings = g_settings_new (GSD_POWER_SETTINGS_SCHEMA);
g_signal_connect (manager->priv->settings, "changed",
G_CALLBACK (engine_settings_key_changed_cb), manager);
+ manager->priv->settings_screensaver = g_settings_new ("org.gnome.desktop.screensaver");
manager->priv->up_client = up_client_new ();
+ g_signal_connect (manager->priv->up_client, "notify-sleep",
+ G_CALLBACK (upower_notify_sleep_cb), manager);
g_signal_connect (manager->priv->up_client, "notify-resume",
G_CALLBACK (upower_notify_resume_cb), manager);
manager->priv->lid_is_closed = up_client_get_lid_is_closed (manager->priv->up_client);
@@ -2211,6 +2236,7 @@ gsd_power_manager_finalize (GObject *object)
g_return_if_fail (manager->priv != NULL);
g_object_unref (manager->priv->settings);
+ g_object_unref (manager->priv->settings_screensaver);
g_object_unref (manager->priv->up_client);
if (manager->priv->x11_screen != NULL);
g_object_unref (manager->priv->x11_screen);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]