aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/session-service.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/session-service.c b/src/session-service.c
index 3832e89..020aad3 100644
--- a/src/session-service.c
+++ b/src/session-service.c
@@ -129,6 +129,20 @@ ensure_gconf_client (void)
return;
}
+/* Check to see if the lockdown key is protecting from
+ locking the screen. If not, lock it. */
+static void
+lock_if_possible (void) {
+ ensure_gconf_client ();
+
+ if (!gconf_client_get_bool (gconf_client, LOCKDOWN_KEY_SCREENSAVER, NULL)) {
+ lock_screen(NULL, 0, NULL);
+ }
+
+ return;
+}
+
+
/* A return from the command to sleep the system. Make sure
that we unthrottle the screensaver. */
static void
@@ -150,7 +164,7 @@ machine_sleep (DbusmenuMenuitem * mi, guint timestamp, gpointer userdata)
}
screensaver_throttle(type);
- lock_screen(NULL, 0, NULL);
+ lock_if_possible();
dbus_g_proxy_begin_call(up_main_proxy,
type,
@@ -341,7 +355,7 @@ activate_guest_session (DbusmenuMenuitem * mi, guint timestamp, gpointer user_da
{
GError * error = NULL;
- lock_screen(mi, timestamp, user_data);
+ lock_if_possible();
if (!g_spawn_command_line_async(GUEST_SESSION_LAUNCHER, &error)) {
g_warning("Unable to start guest session: %s", error->message);
@@ -384,7 +398,7 @@ activate_new_session (DbusmenuMenuitem * mi, guint timestamp, gpointer user_data
{
GError * error = NULL;
- lock_screen(mi, timestamp, user_data);
+ lock_if_possible();
if (!g_spawn_command_line_async("gdmflexiserver --startnew", &error)) {
g_warning("Unable to start new session: %s", error->message);
@@ -401,7 +415,7 @@ activate_user_session (DbusmenuMenuitem *mi, guint timestamp, gpointer user_data
UserData *user = (UserData *)user_data;
UsersServiceDbus *service = user->service;
- lock_screen(mi, timestamp, user_data);
+ lock_if_possible();
users_service_dbus_activate_user_session (service, user);
}