From 70653e74e33d68fe24a495f0afd715819e4a6716 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Feb 09 2009 00:44:59 +0000 Subject: * Mon Feb 09 2009 Peter Hutterer 1.5.99.902-5 - xserver-1.5.99.902-mediakeys-crash.patch: don't crash when multimedia keys are pressed (#483435) --- diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index eb048ca..fd8d33d 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -19,7 +19,7 @@ Summary: X.Org X11 X server Name: xorg-x11-server Version: 1.5.99.902 -Release: 4%{?dist} +Release: 5%{?dist} URL: http://www.x.org License: MIT Group: User Interface/X @@ -79,6 +79,8 @@ Patch6008: xserver-1.5.99.3-fix-core-fonts.patch Patch6009: xserver-1.5.99.902-xinerama.patch # cf. bug 482924 Patch6010: xserver-1.5.99.902-selinux-debugging.patch +# nominated for 1.6 (FDO #19574) +Patch6011: xserver-1.5.99.902-mediakeys-crash.patch %define moduledir %{_libdir}/xorg/modules %define drimoduledir %{_libdir}/dri @@ -496,6 +498,10 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Feb 09 2009 Peter Hutterer 1.5.99.902-5 +- xserver-1.5.99.902-mediakeys-crash.patch: don't crash when multimedia keys + are pressed (#483435) + * Sun Feb 08 2009 Adam Jackson 1.5.99.902-4 - xserver-1.5.99.902-selinux-debugging.patch: Try to figure out why selinux class map setup fails. diff --git a/xserver-1.5.99.902-mediakeys-crash.patch b/xserver-1.5.99.902-mediakeys-crash.patch new file mode 100644 index 0000000..6698683 --- /dev/null +++ b/xserver-1.5.99.902-mediakeys-crash.patch @@ -0,0 +1,34 @@ +From 0d4beba90ad82998f123f05dc0a03003f031b6f0 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 16 Jan 2009 20:38:57 +1000 +Subject: [PATCH] mi: force the paired kbd device before CopyKeyClass. (#19574) + +Some multi-media keyboards send the key events for multimedia keys through the +device file used by the mouse. Sending a key event through the VCP however +will fail. The VCP doesn't have a key class so the server crashes or (with an +appropriate fix) the event is simply swallowed. + +Thus, for key events if the master does not have a key class, get the device +paired with the master (i.e. the VCK) before processing the event any further. + +X.Org Bug 19574 +--- + mi/mieq.c | 4 ++++ + 1 files changed, 4 insertions(+), 0 deletions(-) + +diff --git a/mi/mieq.c b/mi/mieq.c +index 226caa6..213ad5b 100644 +--- a/mi/mieq.c ++++ b/mi/mieq.c +@@ -451,7 +451,11 @@ mieqProcessInputEvents(void) + is transferred. */ + if (event->u.u.type == DeviceKeyPress || + event->u.u.type == DeviceKeyRelease) ++ { ++ if (!master->key) ++ master = GetPairedDevice(master); + CopyKeyClass(dev, master); ++ } + + CopyGetMasterEvent(master, dev, event, masterEvents, nevents); + }