diff --git a/events.diff b/events.diff new file mode 100644 index 0000000..a337fe4 --- /dev/null +++ b/events.diff @@ -0,0 +1,87 @@ +--- xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c.orig 2008-04-21 19:26:30.000000000 +0000 ++++ xorg-server-1.4.0.90/hw/xfree86/common/xf86Events.c 2008-04-21 19:47:54.000000000 +0000 +@@ -884,22 +884,26 @@ + * Keep the order: Disable Device > LeaveVT + * EnterVT > EnableDevice + */ ++ ++ for (i = 0; i < xf86NumScreens; i++) ++ xf86Screens[i]->LeaveVT(i, 0); ++ ++ for (ih = InputHandlers; ih; ih = ih->next) { ++ if (ih->is_input) ++ xf86DisableInputHandler(ih); ++ else ++ xf86DisableGeneralHandler(ih); ++ } ++ + pInfo = xf86InputDevs; + while (pInfo) { + if (pInfo->dev) + DisableDevice(pInfo->dev); + pInfo = pInfo->next; + } ++ /* XXX HACK */ + xf86EnterServerState(SETUP); +- for (i = 0; i < xf86NumScreens; i++) +- xf86Screens[i]->LeaveVT(i, 0); + +- for (ih = InputHandlers; ih; ih = ih->next) { +- if (ih->is_input) +- xf86DisableInputHandler(ih); +- else +- xf86DisableGeneralHandler(ih); +- } + xf86AccessLeave(); /* We need this here, otherwise */ + xf86AccessLeaveState(); /* console won't be restored */ + +@@ -929,14 +933,10 @@ + + pInfo = xf86InputDevs; + while (pInfo) { +- if (pInfo->dev) { +- xf86ReleaseKeys(pInfo->dev); ++ if (pInfo->dev) + EnableDevice(pInfo->dev); +- } + pInfo = pInfo->next; + } +- /* XXX HACK */ +- xf86ReleaseKeys(inputInfo.keyboard); + for (ih = InputHandlers; ih; ih = ih->next) { + if (ih->is_input) + xf86EnableInputHandler(ih); +@@ -946,6 +946,17 @@ + xf86UnblockSIGIO(prevSIGIO); + + } else { ++ ++ pInfo = xf86InputDevs; ++ while (pInfo) { ++ if (pInfo->dev) { ++ xf86ReleaseKeys(pInfo->dev); ++ } ++ pInfo = pInfo->next; ++ } ++ /* XXX HACK */ ++ xf86ReleaseKeys(inputInfo.keyboard); ++ + #ifdef XF86PM + if (xf86OSPMClose) + xf86OSPMClose(); +@@ -996,14 +1007,10 @@ + + pInfo = xf86InputDevs; + while (pInfo) { +- if (pInfo->dev) { +- xf86ReleaseKeys(pInfo->dev); ++ if (pInfo->dev) + EnableDevice(pInfo->dev); +- } + pInfo = pInfo->next; + } +- /* XXX HACK */ +- xf86ReleaseKeys(inputInfo.keyboard); + + for (ih = InputHandlers; ih; ih = ih->next) { + if (ih->is_input) diff --git a/xkb_action.diff b/xkb_action.diff new file mode 100644 index 0000000..197eac5 --- /dev/null +++ b/xkb_action.diff @@ -0,0 +1,13 @@ +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 8c72874..f226b6b 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -1031,7 +1031,7 @@ _XkbFilterDeviceBtn( XkbSrvInfoPtr xkbi, + DeviceIntPtr dev; + int button; + +- if (dev == inputInfo.keyboard) ++ if (xkbi->device == inputInfo.keyboard) + return 0; + + if (filter->keycode==0) { /* initial press */ diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index dd85b64..a7136be 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Mon Apr 21 21:20:37 CEST 2008 - sndirsch@suse.de + +- events.diff + * eating up key events before going into the idle loop upon vt + switch instead of after return (bnc #152522) + +------------------------------------------------------------------- +Mon Apr 21 18:40:41 CEST 2008 - sndirsch@suse.de + +- xkb_action.diff + * fixed remaining unitialized warning in X.Org (bnc #83910) + ------------------------------------------------------------------- Sun Apr 20 05:17:28 CEST 2008 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 1d613ff..5983dbd 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -22,7 +22,7 @@ BuildRequires: libjpeg-devel Url: http://xorg.freedesktop.org/ %define EXPERIMENTAL 0 Version: 7.3 -Release: 91 +Release: 92 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -112,6 +112,8 @@ Patch104: bitmap_always_unscaled.diff Patch105: commit-37b1258.diff Patch106: randr1_1-sig11.diff Patch107: XAANoOffscreenPixmaps.diff +Patch108: xkb_action.diff +Patch109: events.diff %description This package contains the X.Org Server. @@ -253,6 +255,8 @@ popd %patch105 -p1 %patch106 -p1 %patch107 -p0 +%patch108 -p1 +%patch109 -p1 %build pushd xorg-docs-* @@ -559,6 +563,13 @@ exit 0 %endif %changelog +* Mon Apr 21 2008 sndirsch@suse.de +- events.diff + * eating up key events before going into the idle loop upon vt + switch instead of after return (bnc #152522) +* Mon Apr 21 2008 sndirsch@suse.de +- xkb_action.diff + * fixed remaining unitialized warning in X.Org (bnc #83910) * Sun Apr 20 2008 sndirsch@suse.de - fbdevhw.diff * screen blanking not supported by vesafb of Linux kernel