Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package gnome-settings-daemon for a GDM-related bug fix.

gnome-settings-daemon (3.4.2+git20121218.7c1322-3) unstable; urgency=low

  * 06_a11y_gdm_leak.patch: backported from git master. Reset keyboard
    accessibility settings when shutting down the settings daemon. This 
    avoids leaking them from the GDM session to the user’s.
    Closes: #682581.
    + 06_a11y_macro.patch: a bit of refactoring that the previous patch 
      depends on.

unblock gnome-settings-daemon/3.4.2+git20121218.7c1322-3

Thanks,
-- 
 .''`.      Josselin Mouette
: :' :
`. `'
  `-
>From ae36405207ba5ef0a0c7ea6b154e80d8be3e675c Mon Sep 17 00:00:00 2001
From: Bastien Nocera <had...@hadess.net>
Date: Mon, 28 Jan 2013 16:59:21 +0000
Subject: a11y-keyboard: Disable everything on exit if no settings changed

The default setting in GDM is to have the keys enablable
through keyboard shortcuts, and this gets inherited by the
user sessions.

The problem is that non-GNOME users won't have anything
changing those defaults back to their expected values
(so that Slow Keys don't triggered for example), and this
causes problems:
https://bugzilla.redhat.com/show_bug.cgi?id=816764

If the user doesn't change anything to the defaults in the GDM
session, we revert to the pre-"GNOME session" values.

https://bugzilla.gnome.org/show_bug.cgi?id=685063
---
Index: gnome-settings-daemon-3.4.2+git20121218.7c1322/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
===================================================================
--- gnome-settings-daemon-3.4.2+git20121218.7c1322.orig/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c	2013-02-05 16:38:44.911939950 +0100
+++ gnome-settings-daemon-3.4.2+git20121218.7c1322/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c	2013-02-05 16:38:44.903939914 +0100
@@ -63,6 +63,8 @@ struct GsdA11yKeyboardManagerPrivate
         GtkWidget        *preferences_dialog;
         GtkStatusIcon    *status_icon;
 
+        XkbDescRec       *desc;
+
         GSettings        *settings;
 
         NotifyNotification *notification;
@@ -950,6 +952,9 @@ start_a11y_keyboard_idle_cb (GsdA11yKeyb
 
         set_devicepresence_handler (manager);
 
+        /* Get the original configuration from the server */
+        manager->priv->desc = get_xkb_desc_rec (manager);
+
         event_mask = XkbControlsNotifyMask;
         event_mask |= XkbAccessXNotifyMask; /* make default when AXN_AXKWarning works */
 
@@ -995,6 +1000,26 @@ gsd_a11y_keyboard_manager_stop (GsdA11yK
 
         g_debug ("Stopping a11y_keyboard manager");
 
+        if (p->desc != NULL) {
+                XkbDescRec *desc;
+
+                desc = get_xkb_desc_rec (manager);
+                if (desc != NULL) {
+                        if (p->desc->ctrls->enabled_ctrls != desc->ctrls->enabled_ctrls) {
+                                gdk_error_trap_push ();
+                                XkbSetControls (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
+                                                DEFAULT_XKB_SET_CONTROLS_MASK,
+                                                p->desc);
+
+                                XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE);
+                                gdk_error_trap_pop_ignored ();
+                        }
+                        XkbFreeKeyboard (desc, XkbAllComponentsMask, True);
+                }
+                XkbFreeKeyboard (p->desc, XkbAllComponentsMask, True);
+                p->desc = NULL;
+        }
+
         if (p->start_idle_id != 0) {
                 g_source_remove (p->start_idle_id);
                 p->start_idle_id = 0;
>From 0bc81bad702d314cfc975ab4df58817a45a6dd05 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <had...@hadess.net>
Date: Mon, 28 Jan 2013 16:58:50 +0000
Subject: a11y-keyboard: Use macro for everything mask

Less to copy/paste
---
diff --git a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
index 7acd274..33e4665 100644
--- a/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
+++ b/plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c
@@ -62,6 +62,17 @@ struct GsdA11yKeyboardManagerPrivate
         NotifyNotification *notification;
 };
 
+#define DEFAULT_XKB_SET_CONTROLS_MASK           XkbSlowKeysMask         | \
+                                                XkbBounceKeysMask       | \
+                                                XkbStickyKeysMask       | \
+                                                XkbMouseKeysMask        | \
+                                                XkbMouseKeysAccelMask   | \
+                                                XkbAccessXKeysMask      | \
+                                                XkbAccessXTimeoutMask   | \
+                                                XkbAccessXFeedbackMask  | \
+                                                XkbControlsEnabledMask
+
+
 static void     gsd_a11y_keyboard_manager_class_init  (GsdA11yKeyboardManagerClass *klass);
 static void     gsd_a11y_keyboard_manager_init        (GsdA11yKeyboardManager      *a11y_keyboard_manager);
 static void     gsd_a11y_keyboard_manager_finalize    (GObject             *object);
@@ -306,15 +317,7 @@ set_server_from_gsettings (GsdA11yKeyboardManager *manager)
 
         gdk_error_trap_push ();
         XkbSetControls (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
-                        XkbSlowKeysMask         |
-                        XkbBounceKeysMask       |
-                        XkbStickyKeysMask       |
-                        XkbMouseKeysMask        |
-                        XkbMouseKeysAccelMask   |
-                        XkbAccessXKeysMask      |
-                        XkbAccessXTimeoutMask   |
-                        XkbAccessXFeedbackMask  |
-                        XkbControlsEnabledMask,
+                        DEFAULT_XKB_SET_CONTROLS_MASK,
                         desc);
 
         XkbFreeKeyboard (desc, XkbAllComponentsMask, True);
--
cgit v0.9.0.2

Reply via email to