Remove XEvIE
It's unmaintained and has been broken for quite a while; MPX finally smashed it completely. Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
This commit is contained in:
parent
8c3753a0b7
commit
f4036f6ace
|
@ -90,14 +90,6 @@ BUILTIN_SRCS += $(XCALIBRATE_SRCS)
|
||||||
# XCalibrate needs tslib
|
# XCalibrate needs tslib
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# X EVent Interception Extension: allows accessibility helpers & composite
|
|
||||||
# managers to intercept events from input devices and transform as needed
|
|
||||||
# before the clients see them.
|
|
||||||
XEVIE_SRCS = xevie.c
|
|
||||||
if XEVIE
|
|
||||||
BUILTIN_SRCS += $(XEVIE_SRCS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Multi-buffering extension
|
# Multi-buffering extension
|
||||||
MULTIBUFFER_SRCS = mbuf.c
|
MULTIBUFFER_SRCS = mbuf.c
|
||||||
EXTRA_MULTIBUFFER_SRCS = mbufbf.c mbufpx.c
|
EXTRA_MULTIBUFFER_SRCS = mbufbf.c mbufpx.c
|
||||||
|
@ -136,7 +128,6 @@ EXTRA_DIST = \
|
||||||
$(XCSECURITY_SRCS) \
|
$(XCSECURITY_SRCS) \
|
||||||
$(XCALIBRATE_SRCS) \
|
$(XCALIBRATE_SRCS) \
|
||||||
$(XINERAMA_SRCS) \
|
$(XINERAMA_SRCS) \
|
||||||
$(XEVIE_SRCS) \
|
|
||||||
$(MULTIBUFFER_SRCS) \
|
$(MULTIBUFFER_SRCS) \
|
||||||
$(EXTRA_MULTIBUFFER_SRCS) \
|
$(EXTRA_MULTIBUFFER_SRCS) \
|
||||||
$(FONTCACHE_SRCS) \
|
$(FONTCACHE_SRCS) \
|
||||||
|
|
739
Xext/xevie.c
739
Xext/xevie.c
|
@ -1,739 +0,0 @@
|
||||||
/************************************************************
|
|
||||||
|
|
||||||
Copyright 2003-2005 Sun Microsystems, Inc.
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, and/or sell copies of the Software, and to permit persons
|
|
||||||
to whom the Software is furnished to do so, provided that the above
|
|
||||||
copyright notice(s) and this permission notice appear in all copies of
|
|
||||||
the Software and that both the above copyright notice(s) and this
|
|
||||||
permission notice appear in supporting documentation.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
||||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
||||||
OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
||||||
HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
|
|
||||||
INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
|
|
||||||
FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
|
||||||
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of a copyright holder
|
|
||||||
shall not be used in advertising or otherwise to promote the sale, use
|
|
||||||
or other dealings in this Software without prior written authorization
|
|
||||||
of the copyright holder.
|
|
||||||
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
#define NEED_REPLIES
|
|
||||||
#define NEED_EVENTS
|
|
||||||
#ifdef HAVE_DIX_CONFIG_H
|
|
||||||
#include <dix-config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <X11/X.h>
|
|
||||||
#include <X11/Xproto.h>
|
|
||||||
#include "misc.h"
|
|
||||||
#include "dixstruct.h"
|
|
||||||
#include "extnsionst.h"
|
|
||||||
#include "colormapst.h"
|
|
||||||
#include "scrnintstr.h"
|
|
||||||
#include "servermd.h"
|
|
||||||
#define _XEVIE_SERVER_
|
|
||||||
#include <X11/extensions/Xeviestr.h>
|
|
||||||
#include <X11/Xfuncproto.h>
|
|
||||||
#include "input.h"
|
|
||||||
#include "inputstr.h"
|
|
||||||
#include "windowstr.h"
|
|
||||||
#include "cursorstr.h"
|
|
||||||
#include <xkbsrv.h>
|
|
||||||
|
|
||||||
#include "../os/osdep.h"
|
|
||||||
#include "modinit.h"
|
|
||||||
|
|
||||||
#define NoSuchEvent 0x80000000
|
|
||||||
|
|
||||||
#ifdef XKB
|
|
||||||
extern Bool noXkbExtension;
|
|
||||||
#endif
|
|
||||||
extern int xeviegrabState;
|
|
||||||
|
|
||||||
static DISPATCH_PROC(ProcXevieDispatch);
|
|
||||||
static DISPATCH_PROC(SProcXevieDispatch);
|
|
||||||
|
|
||||||
static unsigned char XevieReqCode = 0;
|
|
||||||
static int XevieErrorBase;
|
|
||||||
|
|
||||||
int xevieFlag = 0;
|
|
||||||
int xevieClientIndex = 0;
|
|
||||||
DeviceIntPtr xeviekb = NULL;
|
|
||||||
DeviceIntPtr xeviemouse = NULL;
|
|
||||||
Mask xevieMask = 0;
|
|
||||||
int xevieEventSent = 0;
|
|
||||||
int xevieKBEventSent = 0;
|
|
||||||
static Bool xevieModifiersOn = FALSE;
|
|
||||||
|
|
||||||
static int xevieDevicePrivateKeyIndex;
|
|
||||||
static DevPrivateKey xevieDevicePrivateKey = &xevieDevicePrivateKeyIndex;
|
|
||||||
|
|
||||||
#define XEVIEINFO(dev) ((xevieDeviceInfoPtr) \
|
|
||||||
dixLookupPrivate(&(dev)->devPrivates, xevieDevicePrivateKey))
|
|
||||||
|
|
||||||
Mask xevieFilters[128] =
|
|
||||||
{
|
|
||||||
NoSuchEvent, /* 0 */
|
|
||||||
NoSuchEvent, /* 1 */
|
|
||||||
KeyPressMask, /* KeyPress */
|
|
||||||
KeyReleaseMask, /* KeyRelease */
|
|
||||||
ButtonPressMask, /* ButtonPress */
|
|
||||||
ButtonReleaseMask, /* ButtonRelease */
|
|
||||||
PointerMotionMask /* MotionNotify (initial state) */
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
ProcessInputProc processInputProc;
|
|
||||||
ProcessInputProc realInputProc;
|
|
||||||
DeviceUnwrapProc unwrapProc;
|
|
||||||
} xevieDeviceInfoRec, *xevieDeviceInfoPtr;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
CARD32 time;
|
|
||||||
KeyClassPtr keyc;
|
|
||||||
} xevieKeycQueueRec, *xevieKeycQueuePtr;
|
|
||||||
|
|
||||||
#define KEYC_QUEUE_SIZE 100
|
|
||||||
static xevieKeycQueueRec keycq[KEYC_QUEUE_SIZE] = {{0, NULL}};
|
|
||||||
static int keycqHead = 0, keycqTail = 0;
|
|
||||||
|
|
||||||
static Bool XevieStart(void);
|
|
||||||
static void XevieEnd(int clientIndex);
|
|
||||||
static void XevieClientStateCallback(CallbackListPtr *pcbl, pointer nulldata,
|
|
||||||
pointer calldata);
|
|
||||||
static void XevieServerGrabStateCallback(CallbackListPtr *pcbl,
|
|
||||||
pointer nulldata,
|
|
||||||
pointer calldata);
|
|
||||||
|
|
||||||
static Bool XevieAdd(DeviceIntPtr device, pointer data);
|
|
||||||
static void XevieWrap(DeviceIntPtr device, ProcessInputProc proc);
|
|
||||||
static Bool XevieRemove(DeviceIntPtr device, pointer data);
|
|
||||||
static void doSendEvent(xEvent *xE, DeviceIntPtr device);
|
|
||||||
static void XeviePointerProcessInputProc(xEvent *xE, DeviceIntPtr dev,
|
|
||||||
int count);
|
|
||||||
static void XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count);
|
|
||||||
|
|
||||||
void
|
|
||||||
XevieExtensionInit (void)
|
|
||||||
{
|
|
||||||
ExtensionEntry* extEntry;
|
|
||||||
|
|
||||||
if (!AddCallback(&ServerGrabCallback,XevieServerGrabStateCallback,NULL))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if ((extEntry = AddExtension (XEVIENAME,
|
|
||||||
0,
|
|
||||||
XevieNumberErrors,
|
|
||||||
ProcXevieDispatch,
|
|
||||||
SProcXevieDispatch,
|
|
||||||
NULL,
|
|
||||||
StandardMinorOpcode))) {
|
|
||||||
XevieReqCode = (unsigned char)extEntry->base;
|
|
||||||
XevieErrorBase = extEntry->errorBase;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieQueryVersion (ClientPtr client)
|
|
||||||
{
|
|
||||||
xXevieQueryVersionReply rep;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH (xXevieQueryVersionReq);
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.length = 0;
|
|
||||||
rep.sequence_number = client->sequence;
|
|
||||||
rep.server_major_version = XEVIE_MAJOR_VERSION;
|
|
||||||
rep.server_minor_version = XEVIE_MINOR_VERSION;
|
|
||||||
if (client->swapped) {
|
|
||||||
swaps(&rep.sequence_number, n);
|
|
||||||
swapl(&rep.length, n);
|
|
||||||
swaps(&rep.server_major_version, n);
|
|
||||||
swaps(&rep.server_minor_version, n);
|
|
||||||
}
|
|
||||||
WriteToClient (client, sizeof (xXevieQueryVersionReply), (char *)&rep);
|
|
||||||
return client->noClientException;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieStart (ClientPtr client)
|
|
||||||
{
|
|
||||||
xXevieStartReply rep;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH (xXevieStartReq);
|
|
||||||
rep.pad1 = 0;
|
|
||||||
|
|
||||||
if(!xevieFlag){
|
|
||||||
if (AddCallback(&ClientStateCallback,XevieClientStateCallback,NULL)) {
|
|
||||||
xevieFlag = 1;
|
|
||||||
rep.pad1 = 1;
|
|
||||||
xevieClientIndex = client->index;
|
|
||||||
if(!keycq[0].time ) {
|
|
||||||
int i;
|
|
||||||
for(i=0; i<KEYC_QUEUE_SIZE; i++) {
|
|
||||||
keycq[i].keyc = xalloc(sizeof(KeyClassRec));
|
|
||||||
keycq[i].keyc->xkbInfo = xalloc(sizeof(XkbSrvInfoRec));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
return BadAlloc;
|
|
||||||
} else
|
|
||||||
return BadAccess;
|
|
||||||
#ifdef XKB
|
|
||||||
if (!noXkbExtension) {
|
|
||||||
if (!XevieStart()) {
|
|
||||||
DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL);
|
|
||||||
return BadAlloc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
xevieModifiersOn = FALSE;
|
|
||||||
|
|
||||||
rep.length = 0;
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.sequence_number = client->sequence;
|
|
||||||
if (client->swapped) {
|
|
||||||
swaps(&rep.sequence_number, n);
|
|
||||||
swapl(&rep.length, n);
|
|
||||||
}
|
|
||||||
WriteToClient (client, sizeof (xXevieStartReply), (char *)&rep);
|
|
||||||
return client->noClientException;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieEnd (ClientPtr client)
|
|
||||||
{
|
|
||||||
xXevieEndReply rep;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH (xXevieEndReq);
|
|
||||||
|
|
||||||
if (xevieFlag) {
|
|
||||||
if (client->index != xevieClientIndex)
|
|
||||||
return BadAccess;
|
|
||||||
|
|
||||||
DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL);
|
|
||||||
XevieEnd(xevieClientIndex);
|
|
||||||
}
|
|
||||||
|
|
||||||
rep.length = 0;
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.sequence_number = client->sequence;
|
|
||||||
if (client->swapped) {
|
|
||||||
swaps(&rep.sequence_number, n);
|
|
||||||
swapl(&rep.length, n);
|
|
||||||
}
|
|
||||||
WriteToClient (client, sizeof (xXevieEndReply), (char *)&rep);
|
|
||||||
return client->noClientException;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieSend (ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST (xXevieSendReq);
|
|
||||||
xXevieSendReply rep;
|
|
||||||
xEvent *xE;
|
|
||||||
static unsigned char lastDetail = 0, lastType = 0;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH (xXevieSendReq);
|
|
||||||
|
|
||||||
if (client->index != xevieClientIndex)
|
|
||||||
return BadAccess;
|
|
||||||
|
|
||||||
xE = (xEvent *)&stuff->event;
|
|
||||||
rep.length = 0;
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.sequence_number = client->sequence;
|
|
||||||
if (client->swapped) {
|
|
||||||
swaps(&rep.sequence_number, n);
|
|
||||||
swapl(&rep.length, n);
|
|
||||||
}
|
|
||||||
WriteToClient (client, sizeof (xXevieSendReply), (char *)&rep);
|
|
||||||
|
|
||||||
switch(xE->u.u.type) {
|
|
||||||
case KeyPress:
|
|
||||||
case KeyRelease:
|
|
||||||
xevieKBEventSent = 1;
|
|
||||||
#ifdef XKB
|
|
||||||
if(!noXkbExtension)
|
|
||||||
doSendEvent(xE, inputInfo.keyboard);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
CoreProcessKeyboardEvent (xE, xeviekb, 1);
|
|
||||||
break;
|
|
||||||
case ButtonPress:
|
|
||||||
case ButtonRelease:
|
|
||||||
case MotionNotify:
|
|
||||||
xevieEventSent = 1;
|
|
||||||
#ifdef XKB
|
|
||||||
if(!noXkbExtension)
|
|
||||||
doSendEvent(xE, inputInfo.pointer);
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
CoreProcessPointerEvent(xE, xeviemouse, 1);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lastType = xE->u.u.type;
|
|
||||||
lastDetail = xE->u.u.detail;
|
|
||||||
return client->noClientException;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieSelectInput (ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST (xXevieSelectInputReq);
|
|
||||||
xXevieSelectInputReply rep;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST_SIZE_MATCH (xXevieSelectInputReq);
|
|
||||||
|
|
||||||
if (client->index != xevieClientIndex)
|
|
||||||
return BadAccess;
|
|
||||||
|
|
||||||
xevieMask = stuff->event_mask;
|
|
||||||
rep.length = 0;
|
|
||||||
rep.type = X_Reply;
|
|
||||||
rep.sequence_number = client->sequence;
|
|
||||||
if (client->swapped) {
|
|
||||||
swaps(&rep.sequence_number, n);
|
|
||||||
swapl(&rep.length, n);
|
|
||||||
}
|
|
||||||
WriteToClient (client, sizeof (xXevieSelectInputReply), (char *)&rep);
|
|
||||||
return client->noClientException;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int ProcXevieDispatch (ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST (xReq);
|
|
||||||
switch (stuff->data)
|
|
||||||
{
|
|
||||||
case X_XevieQueryVersion:
|
|
||||||
return ProcXevieQueryVersion (client);
|
|
||||||
case X_XevieStart:
|
|
||||||
return ProcXevieStart (client);
|
|
||||||
case X_XevieEnd:
|
|
||||||
return ProcXevieEnd (client);
|
|
||||||
case X_XevieSend:
|
|
||||||
return ProcXevieSend (client);
|
|
||||||
case X_XevieSelectInput:
|
|
||||||
return ProcXevieSelectInput(client);
|
|
||||||
default:
|
|
||||||
return BadRequest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieQueryVersion (ClientPtr client)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST(xXevieQueryVersionReq);
|
|
||||||
swaps (&stuff->length, n);
|
|
||||||
REQUEST_SIZE_MATCH (xXevieQueryVersionReq);
|
|
||||||
swaps (&stuff->client_major_version, n);
|
|
||||||
swaps (&stuff->client_minor_version, n);
|
|
||||||
return ProcXevieQueryVersion(client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieStart (ClientPtr client)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST (xXevieStartReq);
|
|
||||||
swaps (&stuff->length, n);
|
|
||||||
REQUEST_SIZE_MATCH (xXevieStartReq);
|
|
||||||
swapl (&stuff->screen, n);
|
|
||||||
return ProcXevieStart (client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieEnd (ClientPtr client)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST (xXevieEndReq);
|
|
||||||
swaps (&stuff->length, n);
|
|
||||||
REQUEST_SIZE_MATCH (xXevieEndReq);
|
|
||||||
swapl (&stuff->cmap, n);
|
|
||||||
return ProcXevieEnd (client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieSend (ClientPtr client)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
xEvent eventT;
|
|
||||||
EventSwapPtr proc;
|
|
||||||
|
|
||||||
REQUEST (xXevieSendReq);
|
|
||||||
swaps (&stuff->length, n);
|
|
||||||
REQUEST_SIZE_MATCH (xXevieSendReq);
|
|
||||||
swapl (&stuff->dataType, n);
|
|
||||||
|
|
||||||
/* Swap event */
|
|
||||||
proc = EventSwapVector[stuff->event.u.u.type & 0177];
|
|
||||||
if (!proc || proc == NotImplemented) /* no swapping proc; invalid event type? */
|
|
||||||
return (BadValue);
|
|
||||||
(*proc)(&stuff->event, &eventT);
|
|
||||||
stuff->event = eventT;
|
|
||||||
|
|
||||||
return ProcXevieSend (client);
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieSelectInput (ClientPtr client)
|
|
||||||
{
|
|
||||||
int n;
|
|
||||||
|
|
||||||
REQUEST (xXevieSelectInputReq);
|
|
||||||
swaps (&stuff->length, n);
|
|
||||||
REQUEST_SIZE_MATCH (xXevieSelectInputReq);
|
|
||||||
swapl (&stuff->event_mask, n);
|
|
||||||
return ProcXevieSelectInput (client);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static
|
|
||||||
int SProcXevieDispatch (ClientPtr client)
|
|
||||||
{
|
|
||||||
REQUEST(xReq);
|
|
||||||
switch (stuff->data)
|
|
||||||
{
|
|
||||||
case X_XevieQueryVersion:
|
|
||||||
return SProcXevieQueryVersion (client);
|
|
||||||
case X_XevieStart:
|
|
||||||
return SProcXevieStart (client);
|
|
||||||
case X_XevieEnd:
|
|
||||||
return SProcXevieEnd (client);
|
|
||||||
case X_XevieSend:
|
|
||||||
return SProcXevieSend (client);
|
|
||||||
case X_XevieSelectInput:
|
|
||||||
return SProcXevieSelectInput(client);
|
|
||||||
default:
|
|
||||||
return BadRequest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*======================================================*/
|
|
||||||
|
|
||||||
#define WRAP_INPUTPROC(dev,store,inputProc) \
|
|
||||||
store->processInputProc = dev->public.processInputProc; \
|
|
||||||
dev->public.processInputProc = inputProc; \
|
|
||||||
store->realInputProc = dev->public.realInputProc; \
|
|
||||||
dev->public.realInputProc = inputProc;
|
|
||||||
|
|
||||||
#define COND_WRAP_INPUTPROC(dev,store,inputProc) \
|
|
||||||
if (dev->public.processInputProc == dev->public.realInputProc) \
|
|
||||||
dev->public.processInputProc = inputProc; \
|
|
||||||
store->processInputProc = \
|
|
||||||
store->realInputProc = dev->public.realInputProc; \
|
|
||||||
dev->public.realInputProc = inputProc;
|
|
||||||
|
|
||||||
#define UNWRAP_INPUTPROC(dev,restore) \
|
|
||||||
dev->public.processInputProc = restore->processInputProc; \
|
|
||||||
dev->public.realInputProc = restore->realInputProc;
|
|
||||||
|
|
||||||
#define UNWRAP_INPUTPROC(dev,restore) \
|
|
||||||
dev->public.processInputProc = restore->processInputProc; \
|
|
||||||
dev->public.realInputProc = restore->realInputProc;
|
|
||||||
|
|
||||||
#define XEVIE_EVENT(xE) \
|
|
||||||
(xevieFlag \
|
|
||||||
&& !xeviegrabState \
|
|
||||||
&& clients[xevieClientIndex] \
|
|
||||||
&& (xevieMask & xevieFilters[xE->u.u.type]))
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
sendEvent(ClientPtr pClient, xEvent *xE)
|
|
||||||
{
|
|
||||||
if(pClient->swapped) {
|
|
||||||
xEvent eventTo;
|
|
||||||
|
|
||||||
/* Remember to strip off the leading bit of type in case
|
|
||||||
this event was sent with "SendEvent." */
|
|
||||||
(*EventSwapVector[xE->u.u.type & 0177]) (xE, &eventTo);
|
|
||||||
(void)WriteToClient(pClient, sizeof(xEvent), (char *)&eventTo);
|
|
||||||
} else {
|
|
||||||
(void)WriteToClient(pClient, sizeof(xEvent), (char *) xE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
XevieKbdProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
|
|
||||||
{
|
|
||||||
int key, bit;
|
|
||||||
BYTE *kptr;
|
|
||||||
ProcessInputProc tmp;
|
|
||||||
KeyClassPtr keyc = dev->key;
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(dev);
|
|
||||||
|
|
||||||
if(XEVIE_EVENT(xE)) {
|
|
||||||
key = xE->u.u.detail;
|
|
||||||
kptr = &keyc->down[key >> 3];
|
|
||||||
bit = 1 << (key & 7);
|
|
||||||
|
|
||||||
if (dev->key->modifierMap[xE->u.u.detail])
|
|
||||||
xevieModifiersOn = TRUE;
|
|
||||||
|
|
||||||
xE->u.keyButtonPointer.event = xeviewin->drawable.id;
|
|
||||||
xE->u.keyButtonPointer.root = GetCurrentRootWindow(dev)->drawable.id;
|
|
||||||
xE->u.keyButtonPointer.child = (xeviewin->firstChild)
|
|
||||||
? xeviewin->firstChild->drawable.id:0;
|
|
||||||
xE->u.keyButtonPointer.rootX = xeviehot.x;
|
|
||||||
xE->u.keyButtonPointer.rootY = xeviehot.y;
|
|
||||||
xE->u.keyButtonPointer.state = keyc->state | inputInfo.pointer->button->state;
|
|
||||||
/* fix bug: sequence lost in Xlib */
|
|
||||||
xE->u.u.sequenceNumber = clients[xevieClientIndex]->sequence;
|
|
||||||
#ifdef XKB
|
|
||||||
/* fix for bug5092586 */
|
|
||||||
if(!noXkbExtension) {
|
|
||||||
switch(xE->u.u.type) {
|
|
||||||
case KeyPress: *kptr |= bit; break;
|
|
||||||
case KeyRelease: *kptr &= ~bit; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
keycq[keycqHead].time = xE->u.keyButtonPointer.time;
|
|
||||||
memcpy(keycq[keycqHead].keyc, keyc, sizeof(KeyClassRec) - sizeof(KeyClassPtr));
|
|
||||||
memcpy(keycq[keycqHead].keyc->xkbInfo, keyc->xkbInfo, sizeof(XkbSrvInfoRec));
|
|
||||||
if(++keycqHead >=KEYC_QUEUE_SIZE)
|
|
||||||
keycqHead = 0;
|
|
||||||
sendEvent(clients[xevieClientIndex], xE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = dev->public.realInputProc;
|
|
||||||
UNWRAP_INPUTPROC(dev,xeviep);
|
|
||||||
dev->public.processInputProc(xE,dev,count);
|
|
||||||
COND_WRAP_INPUTPROC(dev,xeviep,tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
XeviePointerProcessInputProc(xEvent *xE, DeviceIntPtr dev, int count)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(dev);
|
|
||||||
ProcessInputProc tmp;
|
|
||||||
|
|
||||||
if (XEVIE_EVENT(xE)) {
|
|
||||||
/* fix bug: sequence lost in Xlib */
|
|
||||||
xE->u.u.sequenceNumber = clients[xevieClientIndex]->sequence;
|
|
||||||
sendEvent(clients[xevieClientIndex], xE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = dev->public.realInputProc;
|
|
||||||
UNWRAP_INPUTPROC(dev,xeviep);
|
|
||||||
dev->public.processInputProc(xE,dev,count);
|
|
||||||
COND_WRAP_INPUTPROC(dev,xeviep,tmp);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
XevieStart(void)
|
|
||||||
{
|
|
||||||
ProcessInputProc prp;
|
|
||||||
prp = XevieKbdProcessInputProc;
|
|
||||||
if (!XevieAdd(inputInfo.keyboard,&prp))
|
|
||||||
return FALSE;
|
|
||||||
prp = XeviePointerProcessInputProc;
|
|
||||||
if (!XevieAdd(inputInfo.pointer,&prp))
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
XevieEnd(int clientIndex)
|
|
||||||
{
|
|
||||||
if (!clientIndex || clientIndex == xevieClientIndex) {
|
|
||||||
|
|
||||||
#ifdef XKB
|
|
||||||
if(!noXkbExtension) {
|
|
||||||
|
|
||||||
XevieRemove(inputInfo.keyboard,NULL);
|
|
||||||
|
|
||||||
inputInfo.keyboard->public.processInputProc = CoreProcessKeyboardEvent;
|
|
||||||
inputInfo.keyboard->public.realInputProc = CoreProcessKeyboardEvent;
|
|
||||||
XkbSetExtension(inputInfo.keyboard,ProcessKeyboardEvent);
|
|
||||||
|
|
||||||
|
|
||||||
XevieRemove(inputInfo.pointer,NULL);
|
|
||||||
|
|
||||||
inputInfo.pointer->public.processInputProc = CoreProcessPointerEvent;
|
|
||||||
inputInfo.pointer->public.realInputProc = CoreProcessPointerEvent;
|
|
||||||
XkbSetExtension(inputInfo.pointer,ProcessPointerEvent);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
xevieFlag = 0;
|
|
||||||
xevieClientIndex = 0;
|
|
||||||
DeleteCallback (&ClientStateCallback, XevieClientStateCallback, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
XevieClientStateCallback(CallbackListPtr *pcbl, pointer nulldata,
|
|
||||||
pointer calldata)
|
|
||||||
{
|
|
||||||
NewClientInfoRec *pci = (NewClientInfoRec *)calldata;
|
|
||||||
ClientPtr client = pci->client;
|
|
||||||
if (client->clientState == ClientStateGone
|
|
||||||
|| client->clientState == ClientStateRetained)
|
|
||||||
XevieEnd(client->index);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
XevieServerGrabStateCallback(CallbackListPtr *pcbl, pointer nulldata,
|
|
||||||
pointer calldata)
|
|
||||||
{
|
|
||||||
ServerGrabInfoRec *grbinfo = (ServerGrabInfoRec *)calldata;
|
|
||||||
if (grbinfo->grabstate == SERVER_GRABBED)
|
|
||||||
xeviegrabState = TRUE;
|
|
||||||
else
|
|
||||||
xeviegrabState = FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define UNWRAP_UNWRAPPROC(device,proc_store) \
|
|
||||||
device->unwrapProc = proc_store;
|
|
||||||
|
|
||||||
#define WRAP_UNWRAPPROC(device,proc_store,proc) \
|
|
||||||
proc_store = device->unwrapProc; \
|
|
||||||
device->unwrapProc = proc;
|
|
||||||
|
|
||||||
static void
|
|
||||||
xevieUnwrapProc(DeviceIntPtr device, DeviceHandleProc proc, pointer data)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(device);
|
|
||||||
ProcessInputProc tmp = device->public.processInputProc;
|
|
||||||
|
|
||||||
UNWRAP_INPUTPROC(device,xeviep);
|
|
||||||
UNWRAP_UNWRAPPROC(device,xeviep->unwrapProc);
|
|
||||||
proc(device,data);
|
|
||||||
WRAP_INPUTPROC(device,xeviep,tmp);
|
|
||||||
WRAP_UNWRAPPROC(device,xeviep->unwrapProc,xevieUnwrapProc);
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
XevieUnwrapAdd(DeviceIntPtr device, void* data)
|
|
||||||
{
|
|
||||||
if (device->unwrapProc)
|
|
||||||
device->unwrapProc(device,XevieUnwrapAdd,data);
|
|
||||||
else {
|
|
||||||
ProcessInputProc *ptr = data;
|
|
||||||
XevieWrap(device,*ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
XevieAdd(DeviceIntPtr device, void* data)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep;
|
|
||||||
|
|
||||||
xeviep = xalloc (sizeof (xevieDeviceInfoRec));
|
|
||||||
if (!xeviep)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
dixSetPrivate(&device->devPrivates, xevieDevicePrivateKey, xeviep);
|
|
||||||
XevieUnwrapAdd(device, data);
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Bool
|
|
||||||
XevieRemove(DeviceIntPtr device,pointer data)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(device);
|
|
||||||
|
|
||||||
if (!xeviep) return TRUE;
|
|
||||||
|
|
||||||
UNWRAP_INPUTPROC(device,xeviep);
|
|
||||||
UNWRAP_UNWRAPPROC(device,xeviep->unwrapProc);
|
|
||||||
|
|
||||||
xfree(xeviep);
|
|
||||||
dixSetPrivate(&device->devPrivates, xevieDevicePrivateKey, NULL);
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
XevieWrap(DeviceIntPtr device, ProcessInputProc proc)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(device);
|
|
||||||
|
|
||||||
WRAP_INPUTPROC(device,xeviep,proc);
|
|
||||||
WRAP_UNWRAPPROC(device,xeviep->unwrapProc,xevieUnwrapProc);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
doSendEvent(xEvent *xE, DeviceIntPtr dev)
|
|
||||||
{
|
|
||||||
xevieDeviceInfoPtr xeviep = XEVIEINFO(dev);
|
|
||||||
ProcessInputProc tmp = dev->public.realInputProc;
|
|
||||||
if (((xE->u.u.type==KeyPress)||(xE->u.u.type==KeyRelease))
|
|
||||||
&& !xevieModifiersOn) {
|
|
||||||
KeyClassPtr keyc = dev->key;
|
|
||||||
CARD8 realModes = dev->key->modifierMap[xE->u.u.detail];
|
|
||||||
int notFound = 0;
|
|
||||||
/* if some events are consumed by client, move the queue tail pointer to the current
|
|
||||||
event which just comes back from Xevie client .
|
|
||||||
*/
|
|
||||||
if(keycq[keycqTail].time != xE->u.keyButtonPointer.time) {
|
|
||||||
while(keycq[keycqTail].time != xE->u.keyButtonPointer.time) {
|
|
||||||
if(++keycqTail >= KEYC_QUEUE_SIZE)
|
|
||||||
keycqTail = 0;
|
|
||||||
if(keycqTail == keycqHead) {
|
|
||||||
notFound = 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!notFound) {
|
|
||||||
dev->key = keycq[keycqTail].keyc;
|
|
||||||
if(++keycqTail >= KEYC_QUEUE_SIZE)
|
|
||||||
keycqTail = 0;
|
|
||||||
}
|
|
||||||
dev->key->modifierMap[xE->u.u.detail] = 0;
|
|
||||||
|
|
||||||
if(dev->key->xkbInfo->repeatKey != 0 && xE->u.u.type != KeyPress)
|
|
||||||
XkbLastRepeatEvent= (pointer)xE;
|
|
||||||
UNWRAP_INPUTPROC(dev,xeviep);
|
|
||||||
dev->public.processInputProc(xE,dev,1);
|
|
||||||
COND_WRAP_INPUTPROC(dev,xeviep,tmp);
|
|
||||||
XkbLastRepeatEvent= NULL;
|
|
||||||
|
|
||||||
dev->key->modifierMap[xE->u.u.detail] = realModes;
|
|
||||||
dev->key = keyc;
|
|
||||||
if(notFound) {
|
|
||||||
DeleteCallback(&ClientStateCallback,XevieClientStateCallback,NULL);
|
|
||||||
XevieEnd(xevieClientIndex);
|
|
||||||
ErrorF("Error: Xevie keyc queue size is not enough, disable Xevie\n");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
UNWRAP_INPUTPROC(dev,xeviep);
|
|
||||||
dev->public.processInputProc(xE,dev,1);
|
|
||||||
COND_WRAP_INPUTPROC(dev,xeviep,tmp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -532,7 +532,6 @@ AC_ARG_ENABLE(xselinux, AS_HELP_STRING([--disable-xselinux], [Build SELinu
|
||||||
AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
|
AC_ARG_ENABLE(xcsecurity, AS_HELP_STRING([--disable-xcsecurity], [Build Security extension (default: disabled)]), [XCSECURITY=$enableval], [XCSECURITY=no])
|
||||||
AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
|
AC_ARG_ENABLE(xcalibrate, AS_HELP_STRING([--enable-xcalibrate], [Build XCalibrate extension (default: disabled)]), [XCALIBRATE=$enableval], [XCALIBRATE=no])
|
||||||
AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
|
AC_ARG_ENABLE(tslib, AS_HELP_STRING([--enable-tslib], [Build kdrive tslib touchscreen support (default: disabled)]), [TSLIB=$enableval], [TSLIB=no])
|
||||||
AC_ARG_ENABLE(xevie, AS_HELP_STRING([--disable-xevie], [Build XEvIE extension (default: enabled)]), [XEVIE=$enableval], [XEVIE=yes])
|
|
||||||
AC_ARG_ENABLE(multibuffer, AS_HELP_STRING([--enable-multibuffer], [Build Multibuffer extension (default: disabled)]), [MULTIBUFFER=$enableval], [MULTIBUFFER=no])
|
AC_ARG_ENABLE(multibuffer, AS_HELP_STRING([--enable-multibuffer], [Build Multibuffer extension (default: disabled)]), [MULTIBUFFER=$enableval], [MULTIBUFFER=no])
|
||||||
AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
|
AC_ARG_ENABLE(dbe, AS_HELP_STRING([--disable-dbe], [Build DBE extension (default: enabled)]), [DBE=$enableval], [DBE=yes])
|
||||||
AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
|
AC_ARG_ENABLE(xf86bigfont, AS_HELP_STRING([--disable-xf86bigfont], [Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=$enableval], [XF86BIGFONT=no])
|
||||||
|
@ -901,12 +900,6 @@ if test "x$XCSECURITY" = xyes; then
|
||||||
AC_DEFINE(XCSECURITY, 1, [Build Security extension])
|
AC_DEFINE(XCSECURITY, 1, [Build Security extension])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AM_CONDITIONAL(XEVIE, [test "x$XEVIE" = xyes])
|
|
||||||
if test "x$XEVIE" = xyes; then
|
|
||||||
AC_DEFINE(XEVIE, 1, [Build XEvIE extension])
|
|
||||||
REQUIRED_MODULES="$REQUIRED_MODULES evieproto"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AM_CONDITIONAL(MULTIBUFFER, [test "x$MULTIBUFFER" = xyes])
|
AM_CONDITIONAL(MULTIBUFFER, [test "x$MULTIBUFFER" = xyes])
|
||||||
if test "x$MULTIBUFFER" = xyes; then
|
if test "x$MULTIBUFFER" = xyes; then
|
||||||
AC_DEFINE(MULTIBUFFER, 1, [Build Multibuffer extension])
|
AC_DEFINE(MULTIBUFFER, 1, [Build Multibuffer extension])
|
||||||
|
|
120
dix/events.c
120
dix/events.c
|
@ -149,18 +149,6 @@ typedef const char *string;
|
||||||
#include "Xserver-dtrace.h"
|
#include "Xserver-dtrace.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
extern int xevieFlag;
|
|
||||||
extern int xevieClientIndex;
|
|
||||||
extern DeviceIntPtr xeviemouse;
|
|
||||||
extern DeviceIntPtr xeviekb;
|
|
||||||
extern Mask xevieMask;
|
|
||||||
extern Mask xevieFilters[128];
|
|
||||||
extern int xevieEventSent;
|
|
||||||
extern int xevieKBEventSent;
|
|
||||||
int xeviegrabState = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <X11/extensions/XIproto.h>
|
#include <X11/extensions/XIproto.h>
|
||||||
#include <X11/extensions/XI.h>
|
#include <X11/extensions/XI.h>
|
||||||
#include "exglobals.h"
|
#include "exglobals.h"
|
||||||
|
@ -338,11 +326,6 @@ IsKeyboardDevice(DeviceIntPtr dev)
|
||||||
return (dev->key && dev->kbdfeed) && !IsPointerDevice(dev);;
|
return (dev->key && dev->kbdfeed) && !IsPointerDevice(dev);;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
_X_EXPORT WindowPtr xeviewin;
|
|
||||||
_X_EXPORT HotSpot xeviehot;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void DoEnterLeaveEvents(
|
static void DoEnterLeaveEvents(
|
||||||
DeviceIntPtr pDev,
|
DeviceIntPtr pDev,
|
||||||
WindowPtr fromWin,
|
WindowPtr fromWin,
|
||||||
|
@ -634,10 +617,6 @@ XineramaCheckVirtualMotion(
|
||||||
qe->event->u.keyButtonPointer.rootY = pSprite->hot.y;
|
qe->event->u.keyButtonPointer.rootY = pSprite->hot.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef XEVIE
|
|
||||||
xeviehot.x = pSprite->hot.x;
|
|
||||||
xeviehot.y = pSprite->hot.y;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -683,11 +662,6 @@ XineramaCheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
||||||
XE_KBPTR.rootY = pSprite->hot.y;
|
XE_KBPTR.rootY = pSprite->hot.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
xeviehot.x = pSprite->hot.x;
|
|
||||||
xeviehot.y = pSprite->hot.y;
|
|
||||||
xeviewin =
|
|
||||||
#endif
|
|
||||||
pSprite->win = XYToWindow(pDev, pSprite->hot.x, pSprite->hot.y);
|
pSprite->win = XYToWindow(pDev, pSprite->hot.x, pSprite->hot.y);
|
||||||
|
|
||||||
if (pSprite->win != prevSpriteWin)
|
if (pSprite->win != prevSpriteWin)
|
||||||
|
@ -945,10 +919,6 @@ CheckVirtualMotion(
|
||||||
qe->event->u.keyButtonPointer.rootY = pSprite->hot.y;
|
qe->event->u.keyButtonPointer.rootY = pSprite->hot.y;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef XEVIE
|
|
||||||
xeviehot.x = pSprite->hot.x;
|
|
||||||
xeviehot.y = pSprite->hot.y;
|
|
||||||
#endif
|
|
||||||
RootWindow(pDev) = WindowTable[pSprite->hot.pScreen->myNum];
|
RootWindow(pDev) = WindowTable[pSprite->hot.pScreen->myNum];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2711,10 +2681,6 @@ CheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
||||||
pSprite->hot.y = pSprite->physLimits.y2 - 1;
|
pSprite->hot.y = pSprite->physLimits.y2 - 1;
|
||||||
if (pSprite->hotShape)
|
if (pSprite->hotShape)
|
||||||
ConfineToShape(pDev, pSprite->hotShape, &pSprite->hot.x, &pSprite->hot.y);
|
ConfineToShape(pDev, pSprite->hotShape, &pSprite->hot.x, &pSprite->hot.y);
|
||||||
#ifdef XEVIE
|
|
||||||
xeviehot.x = pSprite->hot.x;
|
|
||||||
xeviehot.y = pSprite->hot.y;
|
|
||||||
#endif
|
|
||||||
pSprite->hotPhys = pSprite->hot;
|
pSprite->hotPhys = pSprite->hot;
|
||||||
|
|
||||||
if ((pSprite->hotPhys.x != *rootX) ||
|
if ((pSprite->hotPhys.x != *rootX) ||
|
||||||
|
@ -2729,9 +2695,6 @@ CheckMotion(xEvent *xE, DeviceIntPtr pDev)
|
||||||
*rootY = pSprite->hot.y;
|
*rootY = pSprite->hot.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
xeviewin =
|
|
||||||
#endif
|
|
||||||
pSprite->win = XYToWindow(pDev, pSprite->hot.x, pSprite->hot.y);
|
pSprite->win = XYToWindow(pDev, pSprite->hot.x, pSprite->hot.y);
|
||||||
#ifdef notyet
|
#ifdef notyet
|
||||||
if (!(pSprite->win->deliverableEvents &
|
if (!(pSprite->win->deliverableEvents &
|
||||||
|
@ -2828,14 +2791,12 @@ void ReinitializeRootWindow(WindowPtr win, int xoff, int yoff)
|
||||||
/**
|
/**
|
||||||
* Called from main() with the root window on the first screen. Used to do a
|
* Called from main() with the root window on the first screen. Used to do a
|
||||||
* lot more when MPX wasn't around yet. Things change.
|
* lot more when MPX wasn't around yet. Things change.
|
||||||
|
*
|
||||||
|
* Should delete this now? -ds
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
DefineInitialRootWindow(WindowPtr win)
|
DefineInitialRootWindow(WindowPtr win)
|
||||||
{
|
{
|
||||||
#ifdef XEVIE
|
|
||||||
xeviewin = win;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2988,9 +2949,6 @@ UpdateSpriteForScreen(DeviceIntPtr pDev, ScreenPtr pScreen)
|
||||||
pSprite->hot = pSprite->hotPhys;
|
pSprite->hot = pSprite->hotPhys;
|
||||||
pSprite->hotLimits.x2 = pScreen->width;
|
pSprite->hotLimits.x2 = pScreen->width;
|
||||||
pSprite->hotLimits.y2 = pScreen->height;
|
pSprite->hotLimits.y2 = pScreen->height;
|
||||||
#ifdef XEVIE
|
|
||||||
xeviewin =
|
|
||||||
#endif
|
|
||||||
pSprite->win = win;
|
pSprite->win = win;
|
||||||
pSprite->current = wCursor (win);
|
pSprite->current = wCursor (win);
|
||||||
pSprite->current->refcnt++;
|
pSprite->current->refcnt++;
|
||||||
|
@ -3813,45 +3771,6 @@ ProcessKeyboardEvent (xEvent *xE, DeviceIntPtr keybd, int count)
|
||||||
GrabInfoPtr grabinfo;
|
GrabInfoPtr grabinfo;
|
||||||
Bool deactivateGrab = FALSE;
|
Bool deactivateGrab = FALSE;
|
||||||
KeyClassPtr keyc = keybd->key;
|
KeyClassPtr keyc = keybd->key;
|
||||||
#ifdef XEVIE
|
|
||||||
static Window rootWin = 0;
|
|
||||||
|
|
||||||
if(!xeviegrabState && xevieFlag && clients[xevieClientIndex] &&
|
|
||||||
(xevieMask & xevieFilters[xE->u.u.type])) {
|
|
||||||
key = xE->u.u.detail;
|
|
||||||
kptr = &keyc->down[key >> 3];
|
|
||||||
bit = 1 << (key & 7);
|
|
||||||
if((xE->u.u.type == KeyPress && (*kptr & bit)) ||
|
|
||||||
(xE->u.u.type == KeyRelease && !(*kptr & bit)))
|
|
||||||
{} else {
|
|
||||||
#ifdef XKB
|
|
||||||
if(!noXkbExtension)
|
|
||||||
xevieKBEventSent = 1;
|
|
||||||
#endif
|
|
||||||
if(!xevieKBEventSent)
|
|
||||||
{
|
|
||||||
xeviekb = keybd;
|
|
||||||
if(!rootWin) {
|
|
||||||
rootWin = GetCurrentRootWindow(keybd)->drawable.id;
|
|
||||||
}
|
|
||||||
xE->u.keyButtonPointer.event = xeviewin->drawable.id;
|
|
||||||
xE->u.keyButtonPointer.root = rootWin;
|
|
||||||
xE->u.keyButtonPointer.child = (xeviewin->firstChild) ? xeviewin->firstChild->
|
|
||||||
drawable.id:0;
|
|
||||||
xE->u.keyButtonPointer.rootX = xeviehot.x;
|
|
||||||
xE->u.keyButtonPointer.rootY = xeviehot.y;
|
|
||||||
xE->u.keyButtonPointer.state = keyc->state;
|
|
||||||
WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE);
|
|
||||||
#ifdef XKB
|
|
||||||
if(noXkbExtension)
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
xevieKBEventSent = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (xE->u.u.type & EXTENSION_EVENT_BASE)
|
if (xE->u.u.type & EXTENSION_EVENT_BASE)
|
||||||
grabinfo = &keybd->deviceGrab;
|
grabinfo = &keybd->deviceGrab;
|
||||||
|
@ -3871,15 +3790,6 @@ drawable.id:0;
|
||||||
CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo);
|
CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef XEVIE
|
|
||||||
/* fix for bug5094030: don't change the state bit if the event is from XEvIE client */
|
|
||||||
if(!(!xeviegrabState && xevieFlag && clients[xevieClientIndex] &&
|
|
||||||
(xevieMask & xevieFilters[xE->u.u.type]
|
|
||||||
#ifdef XKB
|
|
||||||
&& !noXkbExtension
|
|
||||||
#endif
|
|
||||||
)))
|
|
||||||
#endif
|
|
||||||
/* ProcessOtherEvent already updated the keyboard's state, so we need to
|
/* ProcessOtherEvent already updated the keyboard's state, so we need to
|
||||||
* access prev_state here! */
|
* access prev_state here! */
|
||||||
XE_KBPTR.state = (keyc->prev_state | GetPairedDevice(keybd)->button->state);
|
XE_KBPTR.state = (keyc->prev_state | GetPairedDevice(keybd)->button->state);
|
||||||
|
@ -3889,16 +3799,6 @@ drawable.id:0;
|
||||||
kptr = &keyc->down[key >> 3];
|
kptr = &keyc->down[key >> 3];
|
||||||
bit = 1 << (key & 7);
|
bit = 1 << (key & 7);
|
||||||
modifiers = keyc->modifierMap[key];
|
modifiers = keyc->modifierMap[key];
|
||||||
#if defined(XKB) && defined(XEVIE)
|
|
||||||
if(!noXkbExtension && !xeviegrabState &&
|
|
||||||
xevieFlag && clients[xevieClientIndex] &&
|
|
||||||
(xevieMask & xevieFilters[xE->u.u.type])) {
|
|
||||||
switch(xE->u.u.type) {
|
|
||||||
case KeyPress: *kptr &= ~bit; break;
|
|
||||||
case KeyRelease: *kptr |= bit; break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
switch (xE->u.u.type)
|
switch (xE->u.u.type)
|
||||||
{
|
{
|
||||||
|
@ -3996,18 +3896,6 @@ ProcessPointerEvent (xEvent *xE, DeviceIntPtr mouse, int count)
|
||||||
#ifdef XKB
|
#ifdef XKB
|
||||||
XkbSrvInfoPtr xkbi= GetPairedDevice(mouse)->key->xkbInfo;
|
XkbSrvInfoPtr xkbi= GetPairedDevice(mouse)->key->xkbInfo;
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
if(xevieFlag && clients[xevieClientIndex] && !xeviegrabState &&
|
|
||||||
(xevieMask & xevieFilters[xE->u.u.type])) {
|
|
||||||
if(xevieEventSent)
|
|
||||||
xevieEventSent = 0;
|
|
||||||
else {
|
|
||||||
xeviemouse = mouse;
|
|
||||||
WriteToClient(clients[xevieClientIndex], sizeof(xEvent), (char *)xE);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!syncEvents.playingEvents)
|
if (!syncEvents.playingEvents)
|
||||||
NoticeTime(xE)
|
NoticeTime(xE)
|
||||||
|
@ -5454,10 +5342,6 @@ InitEvents(void)
|
||||||
memcpy(&filters[i], filters[0], sizeof(filters[0]));
|
memcpy(&filters[i], filters[0], sizeof(filters[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
xeviewin = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
syncEvents.replayDev = (DeviceIntPtr)NULL;
|
syncEvents.replayDev = (DeviceIntPtr)NULL;
|
||||||
syncEvents.replayWin = NullWindow;
|
syncEvents.replayWin = NullWindow;
|
||||||
while (syncEvents.pending)
|
while (syncEvents.pending)
|
||||||
|
|
|
@ -731,11 +731,6 @@ E000 XC-APPGROUP:BadAppGroup
|
||||||
R000 XC-MISC:GetVersion
|
R000 XC-MISC:GetVersion
|
||||||
R001 XC-MISC:GetXIDRange
|
R001 XC-MISC:GetXIDRange
|
||||||
R002 XC-MISC:GetXIDList
|
R002 XC-MISC:GetXIDList
|
||||||
R000 XEVIE:QueryVersion
|
|
||||||
R001 XEVIE:Start
|
|
||||||
R002 XEVIE:End
|
|
||||||
R003 XEVIE:Send
|
|
||||||
R004 XEVIE:SelectInput
|
|
||||||
R000 XFIXES:QueryVersion
|
R000 XFIXES:QueryVersion
|
||||||
R001 XFIXES:ChangeSaveSet
|
R001 XFIXES:ChangeSaveSet
|
||||||
R002 XFIXES:SelectSelectionInput
|
R002 XFIXES:SelectSelectionInput
|
||||||
|
|
|
@ -193,10 +193,6 @@ _X_HIDDEN void *dixLookupTab[] = {
|
||||||
SYMFUNC(CheckExtension)
|
SYMFUNC(CheckExtension)
|
||||||
SYMFUNC(MinorOpcodeOfRequest)
|
SYMFUNC(MinorOpcodeOfRequest)
|
||||||
SYMFUNC(StandardMinorOpcode)
|
SYMFUNC(StandardMinorOpcode)
|
||||||
#ifdef XEVIE
|
|
||||||
SYMVAR(xeviehot)
|
|
||||||
SYMVAR(xeviewin)
|
|
||||||
#endif
|
|
||||||
/* gc.c */
|
/* gc.c */
|
||||||
SYMFUNC(CopyGC)
|
SYMFUNC(CopyGC)
|
||||||
SYMFUNC(CreateGC)
|
SYMFUNC(CreateGC)
|
||||||
|
@ -358,9 +354,6 @@ _X_HIDDEN void *dixLookupTab[] = {
|
||||||
#ifdef RES
|
#ifdef RES
|
||||||
SYMVAR(noResExtension)
|
SYMVAR(noResExtension)
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
SYMVAR(noXevieExtension)
|
|
||||||
#endif
|
|
||||||
#ifdef XF86BIGFONT
|
#ifdef XF86BIGFONT
|
||||||
SYMVAR(noXFree86BigfontExtension)
|
SYMVAR(noXFree86BigfontExtension)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,7 +92,4 @@ typedef struct {
|
||||||
ScreenPtr pScreen;
|
ScreenPtr pScreen;
|
||||||
} HotSpot;
|
} HotSpot;
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
extern HotSpot xeviehot;
|
|
||||||
#endif
|
|
||||||
#endif /* CURSORSTRUCT_H */
|
#endif /* CURSORSTRUCT_H */
|
||||||
|
|
|
@ -303,9 +303,6 @@
|
||||||
/* Support Xdmcp */
|
/* Support Xdmcp */
|
||||||
#undef XDMCP
|
#undef XDMCP
|
||||||
|
|
||||||
/* Build XEvIE extension */
|
|
||||||
#undef XEVIE
|
|
||||||
|
|
||||||
/* Build XFree86 BigFont extension */
|
/* Build XFree86 BigFont extension */
|
||||||
#undef XF86BIGFONT
|
#undef XF86BIGFONT
|
||||||
|
|
||||||
|
|
|
@ -94,10 +94,6 @@ extern Bool noSecurityExtension;
|
||||||
extern Bool noResExtension;
|
extern Bool noResExtension;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
extern Bool noXevieExtension;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XF86BIGFONT
|
#ifdef XF86BIGFONT
|
||||||
extern Bool noXFree86BigfontExtension;
|
extern Bool noXFree86BigfontExtension;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -257,8 +257,4 @@ typedef struct _FocusSemaphores {
|
||||||
char focusinout[(MAXDEVICES + 7)/8];
|
char focusinout[(MAXDEVICES + 7)/8];
|
||||||
} FocusSemaphoresRec, *FocusSemaphoresPtr;
|
} FocusSemaphoresRec, *FocusSemaphoresPtr;
|
||||||
|
|
||||||
#ifdef XEVIE
|
|
||||||
extern WindowPtr xeviewin;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* WINDOWSTRUCT_H */
|
#endif /* WINDOWSTRUCT_H */
|
||||||
|
|
|
@ -119,9 +119,6 @@ extern Bool noSecurityExtension;
|
||||||
#ifdef RES
|
#ifdef RES
|
||||||
extern Bool noResExtension;
|
extern Bool noResExtension;
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
extern Bool noXevieExtension;
|
|
||||||
#endif
|
|
||||||
#ifdef XF86BIGFONT
|
#ifdef XF86BIGFONT
|
||||||
extern Bool noXFree86BigfontExtension;
|
extern Bool noXFree86BigfontExtension;
|
||||||
#endif
|
#endif
|
||||||
|
@ -265,9 +262,6 @@ extern void ResExtensionInit(INITARGS);
|
||||||
#ifdef DMXEXT
|
#ifdef DMXEXT
|
||||||
extern void DMXExtensionInit(INITARGS);
|
extern void DMXExtensionInit(INITARGS);
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
extern void XevieExtensionInit(INITARGS);
|
|
||||||
#endif
|
|
||||||
#ifdef XFIXES
|
#ifdef XFIXES
|
||||||
extern void XFixesExtensionInit(INITARGS);
|
extern void XFixesExtensionInit(INITARGS);
|
||||||
#endif
|
#endif
|
||||||
|
@ -327,9 +321,6 @@ static ExtensionToggle ExtensionToggleList[] =
|
||||||
#ifdef RES
|
#ifdef RES
|
||||||
{ "X-Resource", &noResExtension },
|
{ "X-Resource", &noResExtension },
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
{ "XEVIE", &noXevieExtension },
|
|
||||||
#endif
|
|
||||||
#ifdef XF86BIGFONT
|
#ifdef XF86BIGFONT
|
||||||
{ "XFree86-Bigfont", &noXFree86BigfontExtension },
|
{ "XFree86-Bigfont", &noXFree86BigfontExtension },
|
||||||
#endif
|
#endif
|
||||||
|
@ -474,9 +465,6 @@ InitExtensions(int argc, char *argv[])
|
||||||
#ifdef DMXEXT
|
#ifdef DMXEXT
|
||||||
DMXExtensionInit(); /* server-specific extension, cannot be disabled */
|
DMXExtensionInit(); /* server-specific extension, cannot be disabled */
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
if (!noXevieExtension) XevieExtensionInit();
|
|
||||||
#endif
|
|
||||||
#ifdef COMPOSITE
|
#ifdef COMPOSITE
|
||||||
if (!noCompositeExtension) CompositeExtensionInit();
|
if (!noCompositeExtension) CompositeExtensionInit();
|
||||||
#endif
|
#endif
|
||||||
|
@ -532,9 +520,6 @@ static ExtensionModule staticExtensions[] = {
|
||||||
#endif
|
#endif
|
||||||
#ifdef DAMAGE
|
#ifdef DAMAGE
|
||||||
{ DamageExtensionInit, "DAMAGE", &noDamageExtension, NULL },
|
{ DamageExtensionInit, "DAMAGE", &noDamageExtension, NULL },
|
||||||
#endif
|
|
||||||
#ifdef XEVIE
|
|
||||||
{ XevieExtensionInit, "XEVIE", &noXevieExtension, NULL },
|
|
||||||
#endif
|
#endif
|
||||||
{ NULL, NULL, NULL, NULL, NULL }
|
{ NULL, NULL, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
|
@ -160,11 +160,6 @@ _X_EXPORT Bool noSecurityExtension = FALSE;
|
||||||
#ifdef RES
|
#ifdef RES
|
||||||
_X_EXPORT Bool noResExtension = FALSE;
|
_X_EXPORT Bool noResExtension = FALSE;
|
||||||
#endif
|
#endif
|
||||||
#ifdef XEVIE
|
|
||||||
/* Xevie is disabled by default for now until the
|
|
||||||
* interface is stable */
|
|
||||||
_X_EXPORT Bool noXevieExtension = TRUE;
|
|
||||||
#endif
|
|
||||||
#ifdef XF86BIGFONT
|
#ifdef XF86BIGFONT
|
||||||
_X_EXPORT Bool noXFree86BigfontExtension = FALSE;
|
_X_EXPORT Bool noXFree86BigfontExtension = FALSE;
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user