diff options
author | Alan Coopersmith <Alan.Coopersmith@sun.com> | 2005-05-22 01:12:49 +0000 |
---|---|---|
committer | Alan Coopersmith <Alan.Coopersmith@sun.com> | 2005-05-22 01:12:49 +0000 |
commit | 4a9390f0bfc464967151b670179998d375e28d75 (patch) | |
tree | 52deb19ede1425de53bf1a2f323bb99db4fe1e77 | |
parent | 3c68899e6798045e60d3c99900ab73825a612237 (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.h | 41 |
1 files changed, 38 insertions, 3 deletions
@@ -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( |