Input: change processing API to InternalEvents.

Don't pass xEvent* and count through to processing, pass a single
InternalEvent.

Custom handlers are disabled for the time being. And for extra fun,
XKB's pointer motion emulation is disabled. But stick an error in there so
that we get reminded should we forget about it.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2009-02-02 17:20:17 +10:00
parent 0b4066c116
commit 763848d3ab
10 changed files with 34 additions and 31 deletions

View File

@ -876,7 +876,7 @@ UpdateDeviceState(DeviceIntPtr device, DeviceEvent* event)
* *
*/ */
void void
ProcessOtherEvent(xEventPtr ev, DeviceIntPtr device, int count) ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
{ {
GrabPtr grab = device->deviceGrab.grab; GrabPtr grab = device->deviceGrab.grab;
Bool deactivateDeviceGrab = FALSE; Bool deactivateDeviceGrab = FALSE;

View File

@ -1028,7 +1028,7 @@ NoticeEventTime(InternalEvent *ev)
* linked list for later delivery. * linked list for later delivery.
*/ */
void void
EnqueueEvent(xEvent *ev, DeviceIntPtr device, int count) EnqueueEvent(InternalEvent *ev, DeviceIntPtr device)
{ {
QdEventPtr tail = *syncEvents.pendtail; QdEventPtr tail = *syncEvents.pendtail;
QdEventPtr qe; QdEventPtr qe;
@ -1163,7 +1163,7 @@ PlayReleasedEvents(void)
} }
#endif #endif
(*qe->device->public.processInputProc)(qe->event, qe->device, 1); (*qe->device->public.processInputProc)(qe->event, qe->device);
xfree(qe); xfree(qe);
for (dev = inputInfo.devices; dev && dev->deviceGrab.sync.frozen; dev = dev->next) for (dev = inputInfo.devices; dev && dev->deviceGrab.sync.frozen; dev = dev->next)
; ;

View File

@ -328,9 +328,8 @@ extern _X_EXPORT WindowPtr GetSpriteWindow(DeviceIntPtr pDev);
extern _X_EXPORT void NoticeEventTime(InternalEvent *ev); extern _X_EXPORT void NoticeEventTime(InternalEvent *ev);
extern _X_EXPORT void EnqueueEvent( extern _X_EXPORT void EnqueueEvent(
xEventPtr /* xE */, InternalEvent * /* ev */,
DeviceIntPtr /* device */, DeviceIntPtr /* device */);
int /* count */);
extern _X_EXPORT void ActivatePointerGrab( extern _X_EXPORT void ActivatePointerGrab(
DeviceIntPtr /* mouse */, DeviceIntPtr /* mouse */,

View File

@ -51,9 +51,8 @@ UpdateDeviceState (
DeviceEvent* /* xE */); DeviceEvent* /* xE */);
extern _X_EXPORT void ProcessOtherEvent ( extern _X_EXPORT void ProcessOtherEvent (
xEventPtr /* FIXME deviceKeyButtonPointer * xE */, InternalEvent* /* ev */,
DeviceIntPtr /* other */, DeviceIntPtr /* other */);
int /* count */);
extern _X_EXPORT int InitProximityClassDeviceStruct( extern _X_EXPORT int InitProximityClassDeviceStruct(
DeviceIntPtr /* dev */); DeviceIntPtr /* dev */);

View File

@ -96,6 +96,7 @@ SOFTWARE.
#define RevertToFollowKeyboard 3 #define RevertToFollowKeyboard 3
#endif #endif
#include "events.h"
typedef unsigned long Leds; typedef unsigned long Leds;
typedef struct _OtherClients *OtherClientsPtr; typedef struct _OtherClients *OtherClientsPtr;
@ -122,9 +123,8 @@ typedef int (*DeviceProc)(
int /*what*/); int /*what*/);
typedef void (*ProcessInputProc)( typedef void (*ProcessInputProc)(
xEventPtr /*events*/, InternalEvent * /*event*/,
DeviceIntPtr /*device*/, DeviceIntPtr /*device*/);
int /*count*/);
typedef Bool (*DeviceHandleProc)( typedef Bool (*DeviceHandleProc)(
DeviceIntPtr /*device*/, DeviceIntPtr /*device*/,
@ -379,14 +379,12 @@ extern _X_EXPORT void MaybeStopHint(
ClientPtr /*client*/); ClientPtr /*client*/);
extern _X_EXPORT void ProcessPointerEvent( extern _X_EXPORT void ProcessPointerEvent(
xEventPtr /*xE*/, InternalEvent* /* ev */,
DeviceIntPtr /*mouse*/, DeviceIntPtr /*mouse*/);
int /*count*/);
extern _X_EXPORT void ProcessKeyboardEvent( extern _X_EXPORT void ProcessKeyboardEvent(
xEventPtr /*xE*/, InternalEvent* /*ev*/,
DeviceIntPtr /*keybd*/, DeviceIntPtr /*keybd*/);
int /*count*/);
extern _X_EXPORT Bool LegalModifier( extern _X_EXPORT Bool LegalModifier(
unsigned int /*key*/, unsigned int /*key*/,

View File

@ -391,6 +391,7 @@ mieqProcessInputEvents(void)
/* If someone's registered a custom event handler, let them /* If someone's registered a custom event handler, let them
* steal it. */ * steal it. */
#if 0
if (handler) if (handler)
{ {
/* FIXME: this is broken now, InternalEvents! */ /* FIXME: this is broken now, InternalEvents! */
@ -399,12 +400,15 @@ mieqProcessInputEvents(void)
handler(DequeueScreen(master)->myNum, handler(DequeueScreen(master)->myNum,
masterEvents->event, master, 1); masterEvents->event, master, 1);
} else } else
#endif
{ {
/* process slave first, then master */ /* process slave first, then master */
dev->public.processInputProc(event, dev, 1); dev->public.processInputProc(event, dev);
if (master) if (master)
master->public.processInputProc(masterEvents->event, master, 1); master->public.processInputProc(
(InternalEvent*)masterEvents->event,
master);
} }
} }

View File

@ -58,6 +58,9 @@ DeviceIntPtr master = NULL;
if (dev == inputInfo.pointer || !dev->public.on) if (dev == inputInfo.pointer || !dev->public.on)
return; return;
ErrorF("[xkb] XkbDDXFakeDeviceButton. If you read this message in your "
"log file, Please file a bug on bugs.freedesktop.org.\n");
#if 0
nAxes = (dev->valuator?dev->valuator->numAxes:0); nAxes = (dev->valuator?dev->valuator->numAxes:0);
if (nAxes > 6) if (nAxes > 6)
nAxes = 6; nAxes = 6;
@ -125,4 +128,5 @@ DeviceIntPtr master = NULL;
(*master->public.processInputProc)(masterEvents->event, master, count); (*master->public.processInputProc)(masterEvents->event, master, count);
} }
return; return;
#endif
} }

View File

@ -684,16 +684,15 @@ Bool ignoreKeyEvent = FALSE;
extern int xkbDevicePrivateIndex; extern int xkbDevicePrivateIndex;
extern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, pointer); extern void xkbUnwrapProc(DeviceIntPtr, DeviceHandleProc, pointer);
void void
ProcessPointerEvent( register xEvent * xE, ProcessPointerEvent( InternalEvent *ev,
register DeviceIntPtr mouse, DeviceIntPtr mouse)
int count)
{ {
DeviceIntPtr dev = GetPairedDevice(mouse); DeviceIntPtr dev = GetPairedDevice(mouse);
XkbSrvInfoPtr xkbi = dev->key->xkbInfo; XkbSrvInfoPtr xkbi = dev->key->xkbInfo;
unsigned changed = 0; unsigned changed = 0;
ProcessInputProc backupproc; ProcessInputProc backupproc;
xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse); xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(mouse);
DeviceEvent *event = (DeviceEvent*)xE; DeviceEvent *event = (DeviceEvent*)ev;
xkbi->shiftKeyCount = 0; xkbi->shiftKeyCount = 0;
xkbi->lastPtrEventTime= event->time; xkbi->lastPtrEventTime= event->time;
@ -723,7 +722,7 @@ DeviceEvent *event = (DeviceEvent*)xE;
*/ */
UNWRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr, backupproc); UNWRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr, backupproc);
mouse->public.processInputProc(xE, mouse, count); mouse->public.processInputProc(ev, mouse);
COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr, COND_WRAP_PROCESS_INPUT_PROC(mouse, xkbPrivPtr,
backupproc, xkbUnwrapProc); backupproc, xkbUnwrapProc);

View File

@ -853,7 +853,7 @@ ProcessInputProc backupproc;
} }
UNWRAP_PROCESS_INPUT_PROC(xkbi->device,xkbPrivPtr, backupproc); UNWRAP_PROCESS_INPUT_PROC(xkbi->device,xkbPrivPtr, backupproc);
xkbi->device->public.processInputProc(&ev,xkbi->device,1); xkbi->device->public.processInputProc((InternalEvent*)&ev, xkbi->device);
COND_WRAP_PROCESS_INPUT_PROC(xkbi->device, xkbPrivPtr, COND_WRAP_PROCESS_INPUT_PROC(xkbi->device, xkbPrivPtr,
backupproc,xkbUnwrapProc); backupproc,xkbUnwrapProc);
@ -884,7 +884,7 @@ ProcessInputProc backupproc;
} }
UNWRAP_PROCESS_INPUT_PROC(xkbi->device,xkbPrivPtr, backupproc); UNWRAP_PROCESS_INPUT_PROC(xkbi->device,xkbPrivPtr, backupproc);
xkbi->device->public.processInputProc(&ev,xkbi->device,1); xkbi->device->public.processInputProc((InternalEvent*)&ev, xkbi->device);
COND_WRAP_PROCESS_INPUT_PROC(xkbi->device, xkbPrivPtr, COND_WRAP_PROCESS_INPUT_PROC(xkbi->device, xkbPrivPtr,
backupproc,xkbUnwrapProc); backupproc,xkbUnwrapProc);
@ -1212,7 +1212,7 @@ xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(dev);
tmpdev = GetPairedDevice(dev); tmpdev = GetPairedDevice(dev);
UNWRAP_PROCESS_INPUT_PROC(tmpdev,xkbPrivPtr, backupproc); UNWRAP_PROCESS_INPUT_PROC(tmpdev,xkbPrivPtr, backupproc);
dev->public.processInputProc((xEvent*)event, tmpdev, 1); dev->public.processInputProc((InternalEvent*)event, tmpdev);
COND_WRAP_PROCESS_INPUT_PROC(tmpdev, xkbPrivPtr, COND_WRAP_PROCESS_INPUT_PROC(tmpdev, xkbPrivPtr,
backupproc,xkbUnwrapProc); backupproc,xkbUnwrapProc);
} }

View File

@ -161,14 +161,14 @@ unsigned ndx;
} }
void void
ProcessKeyboardEvent(xEvent *xE,DeviceIntPtr keybd,int count) ProcessKeyboardEvent(InternalEvent *ev, DeviceIntPtr keybd)
{ {
KeyClassPtr keyc = keybd->key; KeyClassPtr keyc = keybd->key;
XkbSrvInfoPtr xkbi = NULL; XkbSrvInfoPtr xkbi = NULL;
ProcessInputProc backup_proc; ProcessInputProc backup_proc;
xkbDeviceInfoPtr xkb_priv = XKBDEVICEINFO(keybd); xkbDeviceInfoPtr xkb_priv = XKBDEVICEINFO(keybd);
DeviceEvent *event = (DeviceEvent*)xE; DeviceEvent *event = (DeviceEvent*)ev;
int is_press = (event->type == ET_KeyPress); int is_press = (event->type == ET_KeyPress);
int is_release = (event->type == ET_KeyRelease); int is_release = (event->type == ET_KeyRelease);
@ -178,7 +178,7 @@ ProcessKeyboardEvent(xEvent *xE,DeviceIntPtr keybd,int count)
/* We're only interested in key events. */ /* We're only interested in key events. */
if (!is_press && !is_release) { if (!is_press && !is_release) {
UNWRAP_PROCESS_INPUT_PROC(keybd, xkb_priv, backup_proc); UNWRAP_PROCESS_INPUT_PROC(keybd, xkb_priv, backup_proc);
keybd->public.processInputProc(xE, keybd, count); keybd->public.processInputProc(ev, keybd);
COND_WRAP_PROCESS_INPUT_PROC(keybd, xkb_priv, backup_proc, COND_WRAP_PROCESS_INPUT_PROC(keybd, xkb_priv, backup_proc,
xkbUnwrapProc); xkbUnwrapProc);
return; return;