* Mon Feb 08 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.99.3-2.20100120
- xserver-1.7.4-reset-sli-pointers.patch: reset the server LED indicator pointers after device class copying (#540584)
This commit is contained in:
parent
73b55c8fd7
commit
7683114236
@ -19,7 +19,7 @@
|
|||||||
Summary: X.Org X11 X server
|
Summary: X.Org X11 X server
|
||||||
Name: xorg-x11-server
|
Name: xorg-x11-server
|
||||||
Version: 1.7.99.3
|
Version: 1.7.99.3
|
||||||
Release: 1.%{gitdate}%{dist}
|
Release: 2.%{gitdate}%{dist}
|
||||||
URL: http://www.x.org
|
URL: http://www.x.org
|
||||||
License: MIT
|
License: MIT
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
@ -76,6 +76,7 @@ Patch6045: xserver-1.7.0-randr-gamma-restore.patch
|
|||||||
|
|
||||||
Patch6049: xserver-1.7.1-multilib.patch
|
Patch6049: xserver-1.7.1-multilib.patch
|
||||||
Patch6051: xserver-1.7.1-gamma-kdm-fix.patch
|
Patch6051: xserver-1.7.1-gamma-kdm-fix.patch
|
||||||
|
Patch6052: xserver-1.7.4-reset-sli-pointers.patch
|
||||||
|
|
||||||
%define moduledir %{_libdir}/xorg/modules
|
%define moduledir %{_libdir}/xorg/modules
|
||||||
%define drimoduledir %{_libdir}/dri
|
%define drimoduledir %{_libdir}/dri
|
||||||
@ -504,6 +505,10 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{xserver_source_dir}
|
%{xserver_source_dir}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Feb 08 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.99.3-2.20100120
|
||||||
|
- xserver-1.7.4-reset-sli-pointers.patch: reset the server LED indicator
|
||||||
|
pointers after device class copying (#540584)
|
||||||
|
|
||||||
* Wed Jan 20 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.99.3-1.20100120
|
* Wed Jan 20 2010 Peter Hutterer <peter.hutterer@redhat.com> 1.7.99.3-1.20100120
|
||||||
- Update to today's git master.
|
- Update to today's git master.
|
||||||
- Disable prelease warning patch - this is a prerelease
|
- Disable prelease warning patch - this is a prerelease
|
||||||
|
59
xserver-1.7.4-reset-sli-pointers.patch
Normal file
59
xserver-1.7.4-reset-sli-pointers.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
From 11eea736f44a236dde884b52ad51cb5d1271b7a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Hutterer <peter.hutterer@who-t.net>
|
||||||
|
Date: Wed, 13 Jan 2010 15:03:45 +1000
|
||||||
|
Subject: [PATCH] Xi: reset the sli pointers after copying device classes. (#25640)
|
||||||
|
|
||||||
|
If the indicator flags have the XkbSLI_IsDefault bit set, the indicator map
|
||||||
|
and names aren't their own bit of memory but rather point into the
|
||||||
|
device->key->xkbInfo->desc structure. XkbCopySrvLedInfo knows about this and
|
||||||
|
leaves the pointers alone.
|
||||||
|
|
||||||
|
When copying the classes from the slave to the master, these pointers are
|
||||||
|
copied and still point to the dev->key class of the slave device. If the
|
||||||
|
slave device is removed, the memory becomes invalid and a call to modify
|
||||||
|
this data (e.g. XkbSetIndicators) may cause a deadlock.
|
||||||
|
|
||||||
|
The copying of dev->key relies on dev->kbdfeed to be already set up. Hence
|
||||||
|
the pointers need to be reset once _both_ kbdfeed and key have been copied
|
||||||
|
into the master device.
|
||||||
|
|
||||||
|
X.Org Bug 25640 <http://bugs.freedesktop.org/show_bug.cgi?id=25640>
|
||||||
|
Fedora Bug 540584 <https://bugzilla.redhat.com/show_bug.cgi?id=540584>
|
||||||
|
---
|
||||||
|
Xi/exevents.c | 20 ++++++++++++++++++++
|
||||||
|
1 files changed, 20 insertions(+), 0 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Xi/exevents.c b/Xi/exevents.c
|
||||||
|
index cb2452b..ee32ba8 100644
|
||||||
|
--- a/Xi/exevents.c
|
||||||
|
+++ b/Xi/exevents.c
|
||||||
|
@@ -444,6 +444,26 @@ DeepCopyKeyboardClasses(DeviceIntPtr from, DeviceIntPtr to)
|
||||||
|
to->key = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* If a SrvLedInfoPtr's flags are XkbSLI_IsDefault, the names and maps
|
||||||
|
+ * pointer point into the xkbInfo->desc struct. XkbCopySrvLedInfo
|
||||||
|
+ * didn't update the pointers so we need to do it manually here.
|
||||||
|
+ */
|
||||||
|
+ if (to->kbdfeed)
|
||||||
|
+ {
|
||||||
|
+ KbdFeedbackPtr k;
|
||||||
|
+
|
||||||
|
+ for (k = to->kbdfeed; k; k = k->next)
|
||||||
|
+ {
|
||||||
|
+ if (!k->xkb_sli)
|
||||||
|
+ continue;
|
||||||
|
+ if (k->xkb_sli->flags & XkbSLI_IsDefault)
|
||||||
|
+ {
|
||||||
|
+ k->xkb_sli->names = to->key->xkbInfo->desc->names->indicators;
|
||||||
|
+ k->xkb_sli->maps = to->key->xkbInfo->desc->indicators->maps;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* We can't just copy over the focus class. When an app sets the focus,
|
||||||
|
* it'll do so on the master device. Copying the SDs focus means losing
|
||||||
|
* the focus.
|
||||||
|
--
|
||||||
|
1.6.6
|
||||||
|
|
Loading…
Reference in New Issue
Block a user