fix XEvIE build without XKB

Don't unconditionally play with XKB stuff in XEvIE.
This commit is contained in:
Daniel Stone 2006-07-19 17:06:00 -04:00 committed by Daniel Stone
parent 985c34bf06
commit f8a7a1e40c

View File

@ -59,7 +59,9 @@ of the copyright holder.
#define NoSuchEvent 0x80000000 #define NoSuchEvent 0x80000000
#ifdef XKB
extern Bool noXkbExtension; extern Bool noXkbExtension;
#endif
extern int xeviegrabState; extern int xeviegrabState;
static int ProcDispatch (register ClientPtr client), SProcDispatch (register ClientPtr client); static int ProcDispatch (register ClientPtr client), SProcDispatch (register ClientPtr client);
@ -201,12 +203,14 @@ int ProcStart (register ClientPtr client)
return BadAlloc; return BadAlloc;
} else } else
return BadAccess; return BadAccess;
#ifdef XKB
if (!noXkbExtension) { if (!noXkbExtension) {
if (!XevieStart()) { if (!XevieStart()) {
DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL); DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL);
return BadAlloc; return BadAlloc;
} }
} }
#endif
xevieModifiersOn = FALSE; xevieModifiersOn = FALSE;
@ -255,19 +259,23 @@ int ProcSend (register ClientPtr client)
case KeyPress: case KeyPress:
case KeyRelease: case KeyRelease:
xevieKBEventSent = 1; xevieKBEventSent = 1;
if(noXkbExtension) #ifdef XKB
CoreProcessKeyboardEvent (xE, xeviekb, 1); if(!noXkbExtension)
else
doSendEvent(xE, inputInfo.keyboard); doSendEvent(xE, inputInfo.keyboard);
else
#endif
CoreProcessKeyboardEvent (xE, xeviekb, 1);
break; break;
case ButtonPress: case ButtonPress:
case ButtonRelease: case ButtonRelease:
case MotionNotify: case MotionNotify:
xevieEventSent = 1; xevieEventSent = 1;
if(noXkbExtension) #ifdef XKB
CoreProcessPointerEvent(xE, xeviemouse, 1); if(!noXkbExtension)
else
doSendEvent(xE, inputInfo.pointer); doSendEvent(xE, inputInfo.pointer);
else
#endif
CoreProcessPointerEvent(xE, xeviemouse, 1);
break; break;
default: default:
break; break;
@ -464,6 +472,7 @@ XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
xE->u.keyButtonPointer.state = keyc->state | inputInfo.pointer->button->state; xE->u.keyButtonPointer.state = keyc->state | inputInfo.pointer->button->state;
/* fix bug: sequence lost in Xlib */ /* fix bug: sequence lost in Xlib */
xE->u.u.sequenceNumber = clients[xevieClientIndex]->sequence; xE->u.u.sequenceNumber = clients[xevieClientIndex]->sequence;
#ifdef XKB
/* fix for bug5092586 */ /* fix for bug5092586 */
if(!noXkbExtension) { if(!noXkbExtension) {
switch(xE->u.u.type) { switch(xE->u.u.type) {
@ -471,6 +480,7 @@ XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
case KeyRelease: *kptr &= ~bit; break; case KeyRelease: *kptr &= ~bit; break;
} }
} }
#endif
keycq[keycqHead].time = xE->u.keyButtonPointer.time; keycq[keycqHead].time = xE->u.keyButtonPointer.time;
memcpy(keycq[keycqHead].keyc, keyc, sizeof(KeyClassRec) - sizeof(KeyClassPtr)); memcpy(keycq[keycqHead].keyc, keyc, sizeof(KeyClassRec) - sizeof(KeyClassPtr));
memcpy(keycq[keycqHead].keyc->xkbInfo, keyc->xkbInfo, sizeof(XkbSrvInfoRec)); memcpy(keycq[keycqHead].keyc->xkbInfo, keyc->xkbInfo, sizeof(XkbSrvInfoRec));
@ -525,6 +535,7 @@ XevieEnd(int clientIndex)
{ {
if (!clientIndex || clientIndex == xevieClientIndex) { if (!clientIndex || clientIndex == xevieClientIndex) {
#ifdef XKB
if(!noXkbExtension) { if(!noXkbExtension) {
XevieRemove(inputInfo.keyboard,NULL); XevieRemove(inputInfo.keyboard,NULL);
@ -540,6 +551,7 @@ XevieEnd(int clientIndex)
inputInfo.pointer->public.realInputProc = CoreProcessPointerEvent; inputInfo.pointer->public.realInputProc = CoreProcessPointerEvent;
XkbSetExtension(inputInfo.pointer,ProcessPointerEvent); XkbSetExtension(inputInfo.pointer,ProcessPointerEvent);
} }
#endif
xevieFlag = 0; xevieFlag = 0;
xevieClientIndex = 0; xevieClientIndex = 0;