Merge remote branch 'whot/for-keith'
This commit is contained in:
commit
ca9c2472d7
|
@ -1051,16 +1051,19 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
|
|||
break;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* FIXME: I'm broken. Please fix me. Thanks */
|
||||
if (DeviceEventCallback) {
|
||||
DeviceEventInfoRec eventinfo;
|
||||
SpritePtr pSprite = device->spriteInfo->sprite;
|
||||
|
||||
eventinfo.events = (xEventPtr) xE;
|
||||
eventinfo.count = count;
|
||||
/* see comment in EnqueueEvents regarding the next three lines */
|
||||
if (ev->any.type == ET_Motion)
|
||||
ev->device_event.root = WindowTable[pSprite->hotPhys.pScreen->myNum]->drawable.id;
|
||||
|
||||
eventinfo.device = device;
|
||||
eventinfo.event = ev;
|
||||
CallCallbacks(&DeviceEventCallback, (pointer) & eventinfo);
|
||||
}
|
||||
#endif
|
||||
|
||||
grab = device->deviceGrab.grab;
|
||||
|
||||
switch(event->type)
|
||||
|
|
15
dix/events.c
15
dix/events.c
|
@ -1131,11 +1131,10 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
|
|||
event->type == ET_KeyRelease)
|
||||
AccessXCancelRepeatKey(device->key->xkbInfo, event->detail.key);
|
||||
|
||||
#if 0
|
||||
/* FIXME: I'm broken now. Please fix me. */
|
||||
if (DeviceEventCallback)
|
||||
{
|
||||
DeviceEventInfoRec eventinfo;
|
||||
|
||||
/* The RECORD spec says that the root window field of motion events
|
||||
* must be valid. At this point, it hasn't been filled in yet, so
|
||||
* we do it here. The long expression below is necessary to get
|
||||
|
@ -1145,14 +1144,14 @@ EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
|
|||
* the data that GetCurrentRootWindow relies on hasn't been
|
||||
* updated yet.
|
||||
*/
|
||||
if (xE->u.u.type == DeviceMotionNotify)
|
||||
XE_KBPTR.root =
|
||||
WindowTable[pSprite->hotPhys.pScreen->myNum]->drawable.id;
|
||||
eventinfo.events = xE;
|
||||
eventinfo.count = nevents;
|
||||
if (ev->any.type == ET_Motion)
|
||||
ev->device_event.root = WindowTable[pSprite->hotPhys.pScreen->myNum]->drawable.id;
|
||||
|
||||
eventinfo.event = ev;
|
||||
eventinfo.device = device;
|
||||
CallCallbacks(&DeviceEventCallback, (pointer)&eventinfo);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (event->type == ET_Motion)
|
||||
{
|
||||
#ifdef PANORAMIX
|
||||
|
|
|
@ -576,8 +576,8 @@ typedef struct {
|
|||
extern _X_EXPORT CallbackListPtr DeviceEventCallback;
|
||||
|
||||
typedef struct {
|
||||
xEventPtr events;
|
||||
int count;
|
||||
InternalEvent *event;
|
||||
DeviceIntPtr device;
|
||||
} DeviceEventInfoRec;
|
||||
|
||||
extern int XItoCoreType(int xi_type);
|
||||
|
@ -585,7 +585,7 @@ extern Bool DevHasCursor(DeviceIntPtr pDev);
|
|||
extern Bool _X_EXPORT IsPointerDevice( DeviceIntPtr dev);
|
||||
extern Bool _X_EXPORT IsKeyboardDevice(DeviceIntPtr dev);
|
||||
extern Bool IsPointerEvent(InternalEvent *event);
|
||||
extern Bool IsMaster(DeviceIntPtr dev);
|
||||
extern _X_EXPORT Bool IsMaster(DeviceIntPtr dev);
|
||||
|
||||
extern _X_HIDDEN void CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master);
|
||||
extern _X_HIDDEN int CorePointerProc(DeviceIntPtr dev, int what);
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
|
||||
#define FP1616(integral, frac) ((integral) * (1 << 16) + (frac) * (1 << 16))
|
||||
|
||||
_X_INTERNAL int EventToCore(InternalEvent *event, xEvent *core);
|
||||
_X_INTERNAL int EventToXI(InternalEvent *ev, xEvent **xi, int *count);
|
||||
_X_INTERNAL int EventToXI2(InternalEvent *ev, xEvent **xi);
|
||||
_X_EXPORT int EventToCore(InternalEvent *event, xEvent *core);
|
||||
_X_EXPORT int EventToXI(InternalEvent *ev, xEvent **xi, int *count);
|
||||
_X_EXPORT int EventToXI2(InternalEvent *ev, xEvent **xi);
|
||||
_X_INTERNAL int GetCoreType(InternalEvent* ev);
|
||||
_X_INTERNAL int GetXIType(InternalEvent* ev);
|
||||
_X_INTERNAL int GetXI2Type(InternalEvent* ev);
|
||||
|
|
|
@ -42,6 +42,8 @@ and Jim Haggerty of Metheus.
|
|||
#include "set.h"
|
||||
#include "swaprep.h"
|
||||
#include "inputstr.h"
|
||||
#include "eventconvert.h"
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
|
@ -139,7 +141,8 @@ static int RecordDeleteContext(
|
|||
XID /*id*/
|
||||
);
|
||||
|
||||
|
||||
void RecordExtensionInit(void);
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
/* client private stuff */
|
||||
|
@ -727,38 +730,14 @@ RecordADeliveredEventOrError(CallbackListPtr *pcbl, pointer nulldata, pointer ca
|
|||
} /* RecordADeliveredEventOrError */
|
||||
|
||||
|
||||
/* RecordADeviceEvent
|
||||
*
|
||||
* Arguments:
|
||||
* pcbl is &DeviceEventCallback.
|
||||
* nulldata is NULL.
|
||||
* calldata is a pointer to a DeviceEventInfoRec (include/dix.h)
|
||||
* which provides information about device events that occur.
|
||||
*
|
||||
* Returns: nothing.
|
||||
*
|
||||
* Side Effects:
|
||||
* The device event is recorded by all contexts that have registered
|
||||
* it for this client.
|
||||
*/
|
||||
static void
|
||||
RecordADeviceEvent(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
|
||||
RecordSendProtocolEvents(RecordClientsAndProtocolPtr pRCAP,
|
||||
RecordContextPtr pContext,
|
||||
xEvent* pev, int count)
|
||||
{
|
||||
DeviceEventInfoRec *pei = (DeviceEventInfoRec *)calldata;
|
||||
RecordContextPtr pContext;
|
||||
RecordClientsAndProtocolPtr pRCAP;
|
||||
int eci; /* enabled context index */
|
||||
|
||||
for (eci = 0; eci < numEnabledContexts; eci++)
|
||||
{
|
||||
pContext = ppAllContexts[eci];
|
||||
for (pRCAP = pContext->pListOfRCAP; pRCAP; pRCAP = pRCAP->pNextRCAP)
|
||||
{
|
||||
if (pRCAP->pDeviceEventSet)
|
||||
{
|
||||
int ev; /* event index */
|
||||
xEvent *pev = pei->events;
|
||||
for (ev = 0; ev < pei->count; ev++, pev++)
|
||||
|
||||
for (ev = 0; ev < count; ev++, pev++)
|
||||
{
|
||||
if (RecordIsMemberOfSet(pRCAP->pDeviceEventSet,
|
||||
pev->u.u.type & 0177))
|
||||
|
@ -801,10 +780,56 @@ RecordADeviceEvent(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
|
|||
SetCriticalOutputPending();
|
||||
}
|
||||
} /* end for each event */
|
||||
|
||||
} /* RecordADeviceEvent */
|
||||
|
||||
/* RecordADeviceEvent
|
||||
*
|
||||
* Arguments:
|
||||
* pcbl is &DeviceEventCallback.
|
||||
* nulldata is NULL.
|
||||
* calldata is a pointer to a DeviceEventInfoRec (include/dix.h)
|
||||
* which provides information about device events that occur.
|
||||
*
|
||||
* Returns: nothing.
|
||||
*
|
||||
* Side Effects:
|
||||
* The device event is recorded by all contexts that have registered
|
||||
* it for this client.
|
||||
*/
|
||||
static void
|
||||
RecordADeviceEvent(CallbackListPtr *pcbl, pointer nulldata, pointer calldata)
|
||||
{
|
||||
DeviceEventInfoRec *pei = (DeviceEventInfoRec *)calldata;
|
||||
RecordContextPtr pContext;
|
||||
RecordClientsAndProtocolPtr pRCAP;
|
||||
int eci; /* enabled context index */
|
||||
|
||||
for (eci = 0; eci < numEnabledContexts; eci++)
|
||||
{
|
||||
pContext = ppAllContexts[eci];
|
||||
for (pRCAP = pContext->pListOfRCAP; pRCAP; pRCAP = pRCAP->pNextRCAP)
|
||||
{
|
||||
if (pRCAP->pDeviceEventSet)
|
||||
{
|
||||
int count;
|
||||
xEvent *xi_events = NULL;
|
||||
|
||||
/* TODO check return values */
|
||||
if (IsMaster(pei->device))
|
||||
{
|
||||
xEvent xE;
|
||||
EventToCore(pei->event, &xE);
|
||||
RecordSendProtocolEvents(pRCAP, pContext, &xE, 1);
|
||||
}
|
||||
|
||||
EventToXI(pei->event, &xi_events, &count);
|
||||
RecordSendProtocolEvents(pRCAP, pContext, xi_events, count);
|
||||
xfree(xi_events);
|
||||
} /* end this RCAP selects device events */
|
||||
} /* end for each RCAP on this context */
|
||||
} /* end for each enabled context */
|
||||
} /* RecordADeviceEvent */
|
||||
}
|
||||
|
||||
|
||||
/* RecordFlushAllContexts
|
||||
|
@ -2866,13 +2891,6 @@ RecordCloseDown(ExtensionEntry *extEntry)
|
|||
void
|
||||
RecordExtensionInit(void)
|
||||
{
|
||||
/* FIXME Record is currently broken. Dont initialize it so that clients
|
||||
* that require it can bail out correctly rather than waiting for stuff
|
||||
* that'll never happen */
|
||||
ErrorF("record: RECORD extension enabled at configure time.\n");
|
||||
ErrorF("record: This extension is known to be broken, disabling extension now..\n");
|
||||
ErrorF("record: http://bugs.freedesktop.org/show_bug.cgi?id=20500\n");
|
||||
#if 0
|
||||
ExtensionEntry *extentry;
|
||||
|
||||
RTContext = CreateNewResourceType(RecordDeleteContext, "RecordContext");
|
||||
|
@ -2895,6 +2913,5 @@ RecordExtensionInit(void)
|
|||
}
|
||||
RecordErrorBase = extentry->errorBase;
|
||||
|
||||
#endif
|
||||
} /* RecordExtensionInit */
|
||||
|
||||
|
|
Loading…
Reference in New Issue