From c488541237c8e5072a62a989656cb4233d661b6af1046a1ac515402fbcd6f587 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Mon, 7 Apr 2008 19:08:11 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xorg-x11-server?expand=0&rev=71 --- commit-37b1258.diff | 76 +++++++++++++++++++++++++++++++++++++++++ xorg-x11-server.changes | 6 ++++ xorg-x11-server.spec | 7 +++- 3 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 commit-37b1258.diff diff --git a/commit-37b1258.diff b/commit-37b1258.diff new file mode 100644 index 0000000..f4103e8 --- /dev/null +++ b/commit-37b1258.diff @@ -0,0 +1,76 @@ +commit 37b1258f0a288a79ce6a3eef3559e17a67c4dd96 +Author: Thomas Jaeger +Date: Tue Apr 1 15:27:06 2008 +0300 + + XKB: Fix processInputProc wrapping + + If input processing is frozen, only wrap realInputProc: don't smash + processInputProc as well. When input processing is thawed, pIP will be + rewrapped correctly. + + This supersedes the previous workaround in 50e80c9. + + Signed-off-by: Daniel Stone + +diff --git a/include/xkbsrv.h b/include/xkbsrv.h +index ef99e94..040bb93 100644 +--- a/include/xkbsrv.h ++++ b/include/xkbsrv.h +@@ -237,6 +237,14 @@ typedef struct _XkbSrvLedInfo { + typedef struct + { + ProcessInputProc processInputProc; ++ /* If processInputProc is set to something different than realInputProc, ++ * UNWRAP and COND_WRAP will not touch processInputProc and update only ++ * realInputProc. This ensures that ++ * processInputProc == (frozen ? EnqueueEvent : realInputProc) ++ * ++ * WRAP_PROCESS_INPUT_PROC should only be called during initialization, ++ * since it may destroy this invariant. ++ */ + ProcessInputProc realInputProc; + DeviceUnwrapProc unwrapProc; + } xkbDeviceInfoRec, *xkbDeviceInfoPtr; +@@ -254,14 +262,14 @@ typedef struct + device->public.processInputProc = proc; \ + oldprocs->processInputProc = \ + oldprocs->realInputProc = device->public.realInputProc; \ +- if (proc != device->public.enqueueInputProc) \ +- device->public.realInputProc = proc; \ ++ device->public.realInputProc = proc; \ + oldprocs->unwrapProc = device->unwrapProc; \ + device->unwrapProc = unwrapproc; + + #define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs, backupproc) \ +- backupproc = device->public.processInputProc; \ +- device->public.processInputProc = oldprocs->processInputProc; \ ++ backupproc = device->public.realInputProc; \ ++ if (device->public.processInputProc == device->public.realInputProc)\ ++ device->public.processInputProc = oldprocs->realInputProc; \ + device->public.realInputProc = oldprocs->realInputProc; \ + device->unwrapProc = oldprocs->unwrapProc; + +diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c +index 890cf42..8c72874 100644 +--- a/xkb/xkbActions.c ++++ b/xkb/xkbActions.c +@@ -49,15 +49,14 @@ xkbUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc, + pointer data) + { + xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(device); +- ProcessInputProc tmp = device->public.processInputProc; +- ProcessInputProc dummy; /* unused, but neede for macro */ ++ ProcessInputProc backupproc; + if(xkbPrivPtr->unwrapProc) + xkbPrivPtr->unwrapProc = NULL; + +- UNWRAP_PROCESS_INPUT_PROC(device,xkbPrivPtr, dummy); ++ UNWRAP_PROCESS_INPUT_PROC(device,xkbPrivPtr, backupproc); + proc(device,data); +- WRAP_PROCESS_INPUT_PROC(device,xkbPrivPtr, +- tmp,xkbUnwrapProc); ++ COND_WRAP_PROCESS_INPUT_PROC(device,xkbPrivPtr, ++ backupproc,xkbUnwrapProc); + } + + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 42763f4..24aa8ba 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Apr 7 18:13:06 CEST 2008 - sndirsch@suse.de + +- commit-37b1258.diff + * possibly fixes unwanted autorepeat (bnc #377612, bfo #14811) + ------------------------------------------------------------------- Sat Apr 5 04:03:18 CEST 2008 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 28ad358..88220f5 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: 85 +Release: 86 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -110,6 +110,7 @@ Patch101: zap_warning_xserver.diff Patch102: xorg-server-1.4-vnc-memory.diff Patch103: confine_to_shape.diff Patch104: bitmap_always_unscaled.diff +Patch105: commit-37b1258.diff %description This package contains the X.Org Server. @@ -249,6 +250,7 @@ popd %patch101 -p1 %patch103 %patch104 -p1 +%patch105 -p1 %build pushd xorg-docs-* @@ -555,6 +557,9 @@ exit 0 %endif %changelog +* Mon Apr 07 2008 sndirsch@suse.de +- commit-37b1258.diff + * possibly fixes unwanted autorepeat (bnc #377612, bfo #14811) * Sat Apr 05 2008 sndirsch@suse.de - bitmap_always_unscaled.diff * Default bitmap fonts should typically be set as unscaled (libv)