forked from pool/xorg-x11-server
This commit is contained in:
parent
ee21fc4592
commit
c488541237
76
commit-37b1258.diff
Normal file
76
commit-37b1258.diff
Normal file
@ -0,0 +1,76 @@
|
||||
commit 37b1258f0a288a79ce6a3eef3559e17a67c4dd96
|
||||
Author: Thomas Jaeger <thjaeger@gmail.com>
|
||||
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 <daniel@fooishbar.org>
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user