summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Coopersmith <Alan.Coopersmith@sun.com>2005-05-22 01:12:49 +0000
committerAlan Coopersmith <Alan.Coopersmith@sun.com>2005-05-22 01:12:49 +0000
commit4a9390f0bfc464967151b670179998d375e28d75 (patch)
tree52deb19ede1425de53bf1a2f323bb99db4fe1e77
parent3c68899e6798045e60d3c99900ab73825a612237 (diff)
Bugzilla #2800 <https://bugs.freedesktop.org/show_bug.cgi?id=2800> XevieXORG-6_8_99_9XORG-6_8_99_8XORG-6_8_99_14XORG-6_8_99_13XORG-6_8_99_12XORG-6_8_99_11XORG-6_8_99_10
extension crash with signal 11 on keyboard Bugzilla #1205 <https://bugs.freedesktop.org/show_bug.cgi?id=1205> Xevie client receives two KeyPress events on consumed keys when XKB is enabled Patch #2223 <https://bugs.freedesktop.org/attachment.cgi?id=2223> Fixes for both of these and some other Xevie bugs (Derek Wang - Sun Microsystems)
-rw-r--r--XKBsrv.h41
1 files changed, 38 insertions, 3 deletions
diff --git a/XKBsrv.h b/XKBsrv.h
index 3376d39..2da3f6b 100644
--- a/XKBsrv.h
+++ b/XKBsrv.h
@@ -1,4 +1,5 @@
/* $Xorg: XKBsrv.h,v 1.3 2000/08/18 04:05:45 coskrey Exp $ */
+/* $XdotOrg: $ */
/************************************************************
Copyright (c) 1993 by Silicon Graphics Computer Systems, Inc.
@@ -231,6 +232,40 @@ typedef struct _XkbSrvLedInfo {
*/
#define _XkbStateNotifyInProgress (1<<0)
+typedef struct
+{
+ ProcessInputProc processInputProc;
+ ProcessInputProc realInputProc;
+ DeviceUnwrapProc unwrapProc;
+} xkbDeviceInfoRec, *xkbDeviceInfoPtr;
+
+#define WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
+ device->public.processInputProc = proc; \
+ oldprocs->processInputProc = \
+ oldprocs->realInputProc = device->public.realInputProc; \
+ device->public.realInputProc = proc; \
+ oldprocs->unwrapProc = device->unwrapProc; \
+ device->unwrapProc = unwrapproc;
+
+#define COND_WRAP_PROCESS_INPUT_PROC(device, oldprocs, proc, unwrapproc) \
+ if (device->public.processInputProc == device->public.realInputProc)\
+ device->public.processInputProc = proc; \
+ oldprocs->processInputProc = \
+ oldprocs->realInputProc = device->public.realInputProc; \
+ device->public.realInputProc = proc; \
+ oldprocs->unwrapProc = device->unwrapProc; \
+ device->unwrapProc = unwrapproc;
+
+#define UNWRAP_PROCESS_INPUT_PROC(device, oldprocs) \
+ device->public.processInputProc = oldprocs->processInputProc; \
+ device->public.realInputProc = oldprocs->realInputProc; \
+ device->unwrapProc = oldprocs->unwrapProc;
+
+#define XKBDEVICEINFO(dev) ((xkbDeviceInfoPtr) (dev)->devPrivates[xkbDevicePrivateIndex].ptr)
+
+/***====================================================================***/
+
+
/***====================================================================***/
#define XkbAX_KRGMask (XkbSlowKeysMask|XkbBounceKeysMask)
@@ -648,7 +683,7 @@ extern int XkbComputeControlsNotify(
XkbControlsPtr /* old */,
XkbControlsPtr /* new */,
xkbControlsNotify * /* pCN */,
- Bool /* forceCtrlProc */
+ Bool /* forceCtrlProc */
);
extern void XkbSendControlsNotify(
@@ -783,8 +818,8 @@ extern void XkbFreeDeviceInfo(
);
extern Status XkbResizeDeviceButtonActions(
- XkbDeviceInfoPtr /* devi */,
- unsigned int /* newTotal */
+ XkbDeviceInfoPtr /* devi */,
+ unsigned int /* newTotal */
);
extern XkbInterestPtr XkbFindClientResource(