Package: gnome-screensaver
Version: 3.6.1-1
Severity: normal


-- System Information:
Debian Release: jessie/sid
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'testing'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.11-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages gnome-screensaver depends on:
ii  dbus-x11                   1.6.18-2
ii  gnome-icon-theme           3.10.0-1
ii  gnome-session-bin          3.8.4-3
ii  gsettings-desktop-schemas  3.8.2-2
ii  libc6                      2.17-97
ii  libcairo2                  1.12.16-2
ii  libdbus-1-3                1.6.18-2
ii  libdbus-glib-1-2           0.100.2-1
ii  libgdk-pixbuf2.0-0         2.28.2-1+b1
ii  libglib2.0-0               2.36.4-1
ii  libgnome-desktop-3-7       3.8.4-2
ii  libgnomekbd8               3.6.0-1
ii  libgtk-3-0                 3.8.6-1
ii  libpam0g                   1.1.3-9
ii  libx11-6                   2:1.6.2-1
ii  libxext6                   2:1.3.2-1
ii  libxklavier16              5.2.1-1
ii  libxxf86vm1                1:1.1.3-1

Versions of packages gnome-screensaver recommends:
ii  gnome-power-manager   3.8.2-1
ii  libpam-gnome-keyring  3.8.2-2

gnome-screensaver suggests no packages.

-- no debconf information
--- gs-prefs.old.c	2012-08-20 20:12:39.000000000 +0300
+++ gs-prefs.c	2013-12-26 16:16:59.005822685 +0200
@@ -40,6 +40,10 @@ static void gs_prefs_finalize   (GObject
 #define KEY_LOCK_DISABLE          "disable-lock-screen"
 #define KEY_USER_SWITCH_DISABLE   "disable-user-switching"
 
+#define SESSION_SETTINGS_SCHEMA "org.gnome.desktop.session"
+#define KEY_IDLE_DELAY		  "idle-delay"
+#define KEY_SESSION_NAME	  "session-name"
+
 #define GS_SETTINGS_SCHEMA "org.gnome.desktop.screensaver"
 #define KEY_IDLE_ACTIVATION_ENABLED         "idle-activation-enabled"
 #define KEY_LOCK_ENABLED   "lock-enabled"
@@ -58,6 +62,7 @@ struct GSPrefsPrivate
 {
         GSettings *settings;
         GSettings *lockdown;
+	GSettings *session;
 };
 
 enum {
@@ -129,11 +134,17 @@ _gs_prefs_set_lock_timeout (GSPrefs *pre
                             guint    value)
 {
         /* prevent overflow when converting to milliseconds */
+	if (prefs->lock_enabled) {
+		//idle_delay = 0 not allowed
+		g_warning("idle_delay from gnome-session shema Not set to 0 to avoid useless lock");
+	}
         if (value > G_MAXUINT / 1000) {
                 value = G_MAXUINT / 1000;
         }
 
         prefs->lock_timeout = value * 1000;
+        g_warning("lock_timeout is: %d", prefs->lock_timeout);
+	
 }
 
 static void
@@ -242,6 +253,30 @@ _gs_settings_get_uint (GSettings  *setti
   return value;
 }
 
+static guint
+_gs_session_get_uint (GSettings *session,
+                      const gchar *key)
+{
+ guint value;
+
+ g_settings_get (session, key, "u", &value);
+ return value;
+}
+
+static void
+_gs_prefs_set_idle_timeout (GSPrefs *prefs,
+			  guint    value)
+{
+	/* when value is zero lock not have effect on gnome-screensaver */
+	/* try to set value to 300 secs */
+	if (value > G_MAXUINT / 1000) {
+	        value = G_MAXUINT /1000;
+	}
+	prefs->idle_delay_timeout = value * 1000;
+        g_warning("idle_delay_timeout is: %d", prefs->idle_delay_timeout);
+
+}
+
 static void
 gs_prefs_load_from_settings (GSPrefs *prefs)
 {
@@ -294,6 +329,11 @@ gs_prefs_load_from_settings (GSPrefs *pr
 
         bvalue = g_settings_get_boolean (prefs->priv->lockdown, KEY_USER_SWITCH_DISABLE);
         _gs_prefs_set_user_switch_disabled (prefs, bvalue);
+	
+	/* Session keys */
+	
+	uvalue = _gs_session_get_uint (prefs->priv->session, KEY_IDLE_DELAY);
+	_gs_prefs_set_idle_timeout (prefs, uvalue);
 
 }
 
@@ -323,13 +363,6 @@ key_changed_cb (GSettings   *settings,
                 enabled = g_settings_get_boolean (settings, key);
                 _gs_prefs_set_lock_enabled (prefs, enabled);
                 gs_debug ("lock-enabled=%d",enabled);
-        } else if (strcmp (key, KEY_LOCK_DISABLE) == 0) {
-
-                gboolean disabled;
-
-                disabled = g_settings_get_boolean (settings, key);
-                _gs_prefs_set_lock_disabled (prefs, disabled);
-
         } else if (strcmp (key, KEY_USER_SWITCH_DISABLE) == 0) {
 
                 gboolean disabled;
@@ -395,6 +428,52 @@ key_changed_cb (GSettings   *settings,
 }
 
 static void
+key_changed_cb_sess (GSettings   *session,
+                        const gchar *key,
+                        GSPrefs     *prefs)
+{
+        if (strcmp (key, KEY_IDLE_DELAY) == 0) {
+
+                guint idle_delay;
+
+                idle_delay = _gs_session_get_uint (session, key);
+                _gs_prefs_set_idle_timeout (prefs, idle_delay);
+                 if (idle_delay == 0) {
+                         
+                         
+                        g_settings_set (prefs->priv->session, KEY_IDLE_DELAY, "u", 600);
+                 } 
+                      
+                      
+        } else {
+                g_warning ("Config key not handled: %s", key);
+                return;
+                }
+        
+        g_signal_emit (prefs, signals [CHANGED], 0);
+
+}
+
+static void
+key_changed_cb_lockdn (GSettings   *lockdown,
+                        const gchar *key,
+                        GSPrefs     *prefs)
+{
+        if (strcmp (key, KEY_LOCK_DISABLE) == 0) {
+
+                gboolean disabled;
+
+                disabled = g_settings_get_boolean (lockdown, key);
+                _gs_prefs_set_lock_disabled(prefs, disabled);
+        } else {
+                g_warning ("Config key not handled: %s", key);
+                return;
+                }
+        
+        g_signal_emit (prefs, signals [CHANGED], 0);
+
+}
+static void
 gs_prefs_init (GSPrefs *prefs)
 {
         prefs->priv = GS_PREFS_GET_PRIVATE (prefs);
@@ -407,8 +486,13 @@ gs_prefs_init (GSPrefs *prefs)
         prefs->priv->lockdown          = g_settings_new (LOCKDOWN_SETTINGS_SCHEMA);
         g_signal_connect (prefs->priv->lockdown,
                           "changed",
-                          G_CALLBACK (key_changed_cb),
+                          G_CALLBACK (key_changed_cb_lockdn),
                           prefs);
+	prefs->priv->session	        = g_settings_new (SESSION_SETTINGS_SCHEMA);
+	g_signal_connect (prefs->priv->session,
+			  "changed",
+			  G_CALLBACK (key_changed_cb_sess),
+			  prefs);
 
         prefs->idle_activation_enabled = TRUE;
         prefs->lock_enabled            = TRUE;
@@ -442,6 +526,10 @@ gs_prefs_finalize (GObject *object)
                 g_object_unref (prefs->priv->lockdown);
                 prefs->priv->lockdown = NULL;
         }
+        if (prefs->priv->session) {
+		g_object_unref (prefs->priv->session);
+		prefs->priv->session = NULL;
+	}
 
         g_free (prefs->logout_command);
         g_free (prefs->keyboard_command);

Reply via email to