r36198 - in /desktop/unstable/gnome-settings-daemon/debian: changelog gnome-settings-daemon.gsettings-override patches/11_numlock_loop.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Fri Oct 26 17:04:58 UTC 2012


Author: joss
Date: Fri Oct 26 17:04:58 2012
New Revision: 36198

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=36198
Log:
* 11_numlock_loop.patch: patch from Andrew Potter to fix infinite loop 
  triggered by switching the numlock status.
* gnome-settings-daemon.gsettings-override: dropped, NumLock saving is 
  back to work now.

Added:
    desktop/unstable/gnome-settings-daemon/debian/patches/11_numlock_loop.patch
Removed:
    desktop/unstable/gnome-settings-daemon/debian/gnome-settings-daemon.gsettings-override
Modified:
    desktop/unstable/gnome-settings-daemon/debian/changelog
    desktop/unstable/gnome-settings-daemon/debian/patches/series

Modified: desktop/unstable/gnome-settings-daemon/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-settings-daemon/debian/changelog?rev=36198&op=diff
==============================================================================
--- desktop/unstable/gnome-settings-daemon/debian/changelog [utf-8] (original)
+++ desktop/unstable/gnome-settings-daemon/debian/changelog [utf-8] Fri Oct 26 17:04:58 2012
@@ -1,12 +1,16 @@
-gnome-settings-daemon (3.4.2+git20120925.a4c817-2) UNRELEASED; urgency=low
+gnome-settings-daemon (3.4.2+git20120925.a4c817-2) unstable; urgency=low
 
   * Pull upstream fixes for the print-notifications plugin:
     + 01_print_proxy.patch: don’t create an unused GDBusProxy.
     + 02_print_init.patch: delay CUPS initialization.
     + 03_print_async.patch: test asynchronously whether the CUPS server 
       actually works. Closes: #687978.
-
- -- Josselin Mouette <joss at debian.org>  Fri, 26 Oct 2012 18:48:37 +0200
+  * 11_numlock_loop.patch: patch from Andrew Potter to fix infinite loop 
+    triggered by switching the numlock status.
+  * gnome-settings-daemon.gsettings-override: dropped, NumLock saving is 
+    back to work now.
+
+ -- Josselin Mouette <joss at debian.org>  Fri, 26 Oct 2012 19:04:37 +0200
 
 gnome-settings-daemon (3.4.2+git20120925.a4c817-1) unstable; urgency=low
 

Added: desktop/unstable/gnome-settings-daemon/debian/patches/11_numlock_loop.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-settings-daemon/debian/patches/11_numlock_loop.patch?rev=36198&op=file
==============================================================================
--- desktop/unstable/gnome-settings-daemon/debian/patches/11_numlock_loop.patch (added)
+++ desktop/unstable/gnome-settings-daemon/debian/patches/11_numlock_loop.patch [utf-8] Fri Oct 26 17:04:58 2012
@@ -1,0 +1,82 @@
+commit 82c7fcf7fd4fe43e73ea5ce6408c79d35ec3dfb8
+Author: Andrew Potter <agpotter at gmail.com>
+Date:   Wed Oct 24 13:52:09 2012 -0700
+
+    keyboard: Prevent potential infinite loop
+    
+    Ensure we don't set the numlock setting in response to our own
+    numlock-setting event.
+    
+    https://bugzilla.gnome.org/show_bug.cgi?id=679151
+
+diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c
+index a33460c..1519510 100644
+--- a/plugins/keyboard/gsd-keyboard-manager.c
++++ b/plugins/keyboard/gsd-keyboard-manager.c
+@@ -73,6 +73,7 @@ struct GsdKeyboardManagerPrivate
+         gboolean   have_xkb;
+         gint       xkb_event_base;
+         GsdNumLockState old_state;
++        gulong     numlock_serial;
+ };
+ 
+ static void     gsd_keyboard_manager_class_init  (GsdKeyboardManagerClass *klass);
+@@ -128,13 +129,15 @@ numlock_NumLock_modifier_mask (void)
+ }
+ 
+ static void
+-numlock_set_xkb_state (GsdNumLockState new_state)
++numlock_set_xkb_state (GsdKeyboardManager *manager)
+ {
+         unsigned int num_mask;
+         Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
++        GsdNumLockState new_state = manager->priv->old_state;
+         if (new_state != GSD_NUM_LOCK_STATE_ON && new_state != GSD_NUM_LOCK_STATE_OFF)
+                 return;
+         num_mask = numlock_NumLock_modifier_mask ();
++        manager->priv->numlock_serial = NextRequest(dpy);
+         XkbLockModifiers (dpy, XkbUseCoreKbd, num_mask, new_state == GSD_NUM_LOCK_STATE_ON ? num_mask : 0);
+ }
+ 
+@@ -156,16 +159,18 @@ numlock_xkb_callback (GdkXEvent *xev_,
+ 	if (xkbev->state.changed & XkbModifierLockMask) {
+ 		unsigned num_mask = numlock_NumLock_modifier_mask ();
+ 		unsigned locked_mods = xkbev->state.locked_mods;
++                unsigned long serial = xkbev->state.serial;
+ 		GsdNumLockState numlock_state;
+ 
+ 		numlock_state = (num_mask & locked_mods) ? GSD_NUM_LOCK_STATE_ON : GSD_NUM_LOCK_STATE_OFF;
+ 
+-		if (numlock_state != manager->priv->old_state) {
+-			g_settings_set_enum (manager->priv->settings,
+-					     KEY_NUMLOCK_STATE,
+-					     numlock_state);
+-			manager->priv->old_state = numlock_state;
+-		}
++		if (numlock_state != manager->priv->old_state
++                    && serial > manager->priv->numlock_serial) {
++                                g_settings_set_enum (manager->priv->settings,
++                                                     KEY_NUMLOCK_STATE,
++                                                     numlock_state);
++                                manager->priv->old_state = numlock_state;
++                }
+ 	}
+ 
+         return GDK_FILTER_CONTINUE;
+@@ -254,7 +259,7 @@ apply_settings (GSettings          *settings,
+         manager->priv->old_state = g_settings_get_enum (manager->priv->settings, KEY_NUMLOCK_STATE);
+ 
+         if (manager->priv->have_xkb && rnumlock)
+-                numlock_set_xkb_state (manager->priv->old_state);
++                numlock_set_xkb_state (manager);
+ 
+         XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE);
+         gdk_error_trap_pop_ignored ();
+@@ -359,6 +364,7 @@ static void
+ gsd_keyboard_manager_init (GsdKeyboardManager *manager)
+ {
+         manager->priv = GSD_KEYBOARD_MANAGER_GET_PRIVATE (manager);
++        manager->priv->numlock_serial = G_MAXULONG;
+ }
+ 
+ static void

Modified: desktop/unstable/gnome-settings-daemon/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/gnome-settings-daemon/debian/patches/series?rev=36198&op=diff
==============================================================================
--- desktop/unstable/gnome-settings-daemon/debian/patches/series [utf-8] (original)
+++ desktop/unstable/gnome-settings-daemon/debian/patches/series [utf-8] Fri Oct 26 17:04:58 2012
@@ -3,6 +3,7 @@
 03_print_async.patch
 04_superP.patch
 10_smaller_syndaemon_timeout.patch
+11_numlock_loop.patch
 power-check-null-devices.patch
 power-ignore-bad-dbus-requests.patch
 revert_git_datetime_dropping.patch




More information about the pkg-gnome-commits mailing list