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