← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~mterry/indicator-session/dont-start-screensaver-in-greeter into lp:indicator-session

 

Michael Terry has proposed merging lp:~mterry/indicator-session/dont-start-screensaver-in-greeter into lp:indicator-session.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)
Related bugs:
  Bug #812804 in Session Menu: "lightdm asks for password when resuming from suspend even when no one is logged in"
  https://bugs.launchpad.net/indicator-session/+bug/812804

For more details, see:
https://code.launchpad.net/~mterry/indicator-session/dont-start-screensaver-in-greeter/+merge/71944

Prevents starting gnome-screensaver when running in the greeter.

While I was there, I also updated the check for screensaver settings to use GSettings instead of GConf.

I notice that gconf-helper still refers to gconf for some gnome-settings-daemon stuff.  That should probably be moved to gsettings too before 11.10.
-- 
https://code.launchpad.net/~mterry/indicator-session/dont-start-screensaver-in-greeter/+merge/71944
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/lock-helper.c'
--- src/lock-helper.c	2010-08-06 15:57:11 +0000
+++ src/lock-helper.c	2011-08-17 20:25:25 +0000
@@ -20,12 +20,12 @@
 */
 
 #include <glib/gi18n.h>
-#include <gconf/gconf-client.h>
+#include <gio/gio.h>
 #include <dbus/dbus-glib.h>
 #include "lock-helper.h"
 
-#define GCONF_DIR  "/apps/gnome-screensaver"
-#define GCONF_KEY  GCONF_DIR "/lock_enabled"
+#define SCREENSAVER_SCHEMA            "org.gnome.desktop.screensaver"
+#define SCREENSAVER_LOCK_ENABLED_KEY  "lock-enabled"
 
 static DBusGProxy * gss_proxy = NULL;
 static GMainLoop * gss_mainloop = NULL;
@@ -34,7 +34,7 @@
 
 static gboolean is_guest = FALSE;
 
-static GConfClient * gconf_client = NULL;
+static GSettings * settings = NULL;
 
 void build_gss_proxy (void);
 
@@ -131,11 +131,11 @@
 		return FALSE;
 	}
 
-	if (gconf_client == NULL) {
-		gconf_client = gconf_client_get_default();
+	if (settings == NULL) {
+		settings = g_settings_new (SCREENSAVER_SCHEMA);
 	}
 
-	return gconf_client_get_bool (gconf_client, GCONF_KEY, NULL);
+	return g_settings_get_boolean (settings, SCREENSAVER_LOCK_ENABLED_KEY);
 }
 
 /* When the screensave go active, if we've got a mainloop
@@ -150,11 +150,22 @@
 	return;
 }
 
+static gboolean
+get_greeter_mode (void)
+{
+	const gchar *var;
+	var = g_getenv("INDICATOR_GREETER_MODE");
+	return (g_strcmp0(var, "1") == 0);
+}
+
 /* Build the gss proxy and set up it's signals */
 void
 build_gss_proxy (void)
 {
 	if (gss_proxy == NULL) {
+		if (get_greeter_mode ())
+			return; /* Don't start/lock the screensaver from the login screen */
+
 		DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, NULL);
 		g_return_if_fail(session_bus != NULL);
 


Follow ups