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);