[PATCH 2/4] input: Provide Queue{Button|Keyboard|Proximity}Event helpers
Peter Hutterer
peter.hutterer at who-t.net
Thu Apr 14 20:24:18 PDT 2011
On Thu, Apr 14, 2011 at 08:17:26PM -0700, Jeremy Huddleston wrote:
> Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>
>
> Why are *ProximityEvents not exported?
I noticed that too but it's a follow-up patch. Probably because no-one
noticed so far. I think the _X_EXPORT for the other two was needed for Xvnc
and that presumably doesn't use proximity so it got left out.
Cheers,
Peter
>
> On Apr 14, 2011, at 7:47 PM, Peter Hutterer wrote:
>
> > Don't require every caller to use GPE + mieqEnqueue, provide matching
> > Queue...Event functions instead.
> >
> > Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> > ---
> > dix/getevents.c | 80 ++++++++++++++++++++++++++++++++++++++++
> > hw/dmx/input/dmxevents.c | 54 ++++++++-------------------
> > hw/kdrive/src/kinput.c | 18 ++------
> > hw/xfree86/common/xf86Events.c | 6 +--
> > hw/xfree86/common/xf86Xinput.c | 36 ++++-------------
> > hw/xnest/Events.c | 32 +++++-----------
> > hw/xquartz/darwinEvents.c | 20 +++------
> > hw/xwin/winkeybd.c | 6 +--
> > hw/xwin/winmouse.c | 15 ++-----
> > include/input.h | 21 ++++++++++
> > 10 files changed, 155 insertions(+), 133 deletions(-)
> >
> > diff --git a/dix/getevents.c b/dix/getevents.c
> > index 0fa8046..5953bc1 100644
> > --- a/dix/getevents.c
> > +++ b/dix/getevents.c
> > @@ -47,6 +47,7 @@
> > #include "eventstr.h"
> > #include "eventconvert.h"
> > #include "inpututils.h"
> > +#include "mi.h"
> >
> > #include <X11/extensions/XKBproto.h>
> > #include "xkbsrv.h"
> > @@ -925,6 +926,39 @@ updateHistory(DeviceIntPtr dev, ValuatorMask *mask, CARD32 ms)
> > }
> > }
> >
> > +static void
> > +queueEventList(DeviceIntPtr device, EventList *events, int nevents)
> > +{
> > + int i;
> > +
> > + for (i = 0; i < nevents; i++)
> > + mieqEnqueue(device, (InternalEvent*)((events + i)->event));
> > +}
> > +
> > +/**
> > + * Generate internal events representing this keyboard event and enqueue
> > + * them on the event queue.
> > + *
> > + * FIXME: don't require the event list to be passed in.
> > + * FIXME: flags for relative/abs motion?
> > + *
> > + * @param events Event list used as temporary storage
> > + * @param device The device to generate the event for
> > + * @param type Event type, one of KeyPress or KeyRelease
> > + * @param keycode Key code of the pressed/released key
> > + * @param mask Valuator mask for valuators present for this event.
> > + *
> > + */
> > +void
> > +QueueKeyboardEvents(EventList *events, DeviceIntPtr device, int type,
> > + int keycode, const ValuatorMask *mask)
> > +{
> > + int nevents;
> > +
> > + nevents = GetKeyboardEvents(events, device, type, keycode, mask);
> > + queueEventList(device, events, nevents);
> > +}
> > +
> > /**
> > * Returns a set of InternalEvents for KeyPress/KeyRelease, optionally
> > * also with valuator events.
> > @@ -1072,6 +1106,30 @@ transformAbsolute(DeviceIntPtr dev, ValuatorMask *mask)
> > }
> >
> > /**
> > + * Generate internal events representing this pointer event and enqueue them
> > + * on the event queue.
> > + *
> > + * FIXME: don't require the event list to be passed in.
> > + *
> > + * @param events Event list used as temporary storage
> > + * @param device The device to generate the event for
> > + * @param type Event type, one of ButtonPress, ButtonRelease, MotionNotify
> > + * @param buttons Button number of the buttons modified. Must be 0 for
> > + * MotionNotify
> > + * @param flags Event modification flags
> > + * @param mask Valuator mask for valuators present for this event.
> > + */
> > +void
> > +QueuePointerEvents(EventList *events, DeviceIntPtr device, int type,
> > + int buttons, int flags, const ValuatorMask *mask)
> > +{
> > + int nevents;
> > +
> > + nevents = GetPointerEvents(events, device, type, buttons, flags, mask);
> > + queueEventList(device, events, nevents);
> > +}
> > +
> > +/**
> > * Generate a series of InternalEvents (filled into the EventList)
> > * representing pointer motion, or button presses.
> > *
> > @@ -1215,6 +1273,28 @@ GetPointerEvents(EventList *events, DeviceIntPtr pDev, int type, int buttons,
> > return num_events;
> > }
> >
> > +/**
> > + * Generate internal events representing this proximity event and enqueue
> > + * them on the event queue.
> > + *
> > + * FIXME: don't require the event list to be passed in.
> > + *
> > + * @param events Event list used as temporary storage
> > + * @param device The device to generate the event for
> > + * @param type Event type, one of ProximityIn or ProximityOut
> > + * @param keycode Key code of the pressed/released key
> > + * @param mask Valuator mask for valuators present for this event.
> > + *
> > + */
> > +void
> > +QueueProximityEvents(EventList *events, DeviceIntPtr device, int type,
> > + const ValuatorMask *mask)
> > +{
> > + int nevents;
> > +
> > + nevents = GetProximityEvents(events, device, type, mask);
> > + queueEventList(device, events, nevents);
> > +}
> >
> > /**
> > * Generate ProximityIn/ProximityOut InternalEvents, accompanied by
> > diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
> > index 15d80f5..3f9035c 100644
> > --- a/hw/dmx/input/dmxevents.c
> > +++ b/hw/dmx/input/dmxevents.c
> > @@ -176,7 +176,7 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
> > {
> > GETDMXLOCALFROMPDEV;
> > DeviceIntPtr p = dmxLocal->pDevice;
> > - int i, nevents, valuators[3];
> > + int valuators[3];
> > EventListPtr events;
> > int detail = 0; /* XXX should this be mask of pressed buttons? */
> > ValuatorMask mask;
> > @@ -185,10 +185,8 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
> >
> > valuator_mask_set_range(&mask, 0, 2, valuators);
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, p, MotionNotify, detail,
> > - POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(p, (InternalEvent*)(events + i)->event);
> > + QueuePointerEvents(events, p, MotionNotify, detail,
> > + POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > return;
> > }
> >
> > @@ -291,10 +289,8 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
> > deviceValuator *xv = (deviceValuator *)xev+1;
> > int thisX = 0;
> > int thisY = 0;
> > - int i;
> > int count;
> > EventListPtr events;
> > - int nevents;
> > ValuatorMask mask;
> >
> > memset(xE, 0, sizeof(xE));
> > @@ -348,6 +344,7 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
> > }
> > count = 2;
> > } else {
> > + int i;
> > for (i = 0, count = 0; i < axesCount; i += 6) {
> > xev->time = GetTimeInMillis();
> > xev->type = DeviceMotionNotify;
> > @@ -376,10 +373,8 @@ static void dmxExtMotion(DMXLocalInputInfoPtr dmxLocal,
> > dmxSigioBlock();
> > valuator_mask_set_range(&mask, firstAxis, axesCount, v);
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, pDevice, MotionNotify, 0,
> > - POINTER_ABSOLUTE, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
> > + QueuePointerEvents(events, pDevice, MotionNotify, 0,
> > + POINTER_ABSOLUTE, &mask);
> >
> > if (block)
> > dmxSigioUnblock();
> > @@ -395,7 +390,6 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
> > DeviceIntPtr pDevice = dmxLocal->pDevice;
> > int valuators[MAX_VALUATORS];
> > EventListPtr events;
> > - int nevents, i;
> > ValuatorMask mask;
> >
> > if (!e)
> > @@ -453,11 +447,7 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
> > if (block)
> > dmxSigioBlock();
> > GetEventList(&events);
> > - nevents = GetKeyboardEvents(events, pDevice, event,
> > - ke->keycode, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
> > -
> > + QueueKeyboardEvents(events, pDevice, event, ke->keycode, &mask);
> > if (block)
> > dmxSigioUnblock();
> > break;
> > @@ -468,11 +458,8 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
> > if (block)
> > dmxSigioBlock();
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, pDevice, event, ke->keycode,
> > - POINTER_ABSOLUTE, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
> > -
> > + QueuePointerEvents(events, pDevice, event, ke->keycode,
> > + POINTER_ABSOLUTE, &mask);
> > if (block)
> > dmxSigioUnblock();
> > break;
> > @@ -483,10 +470,7 @@ static int dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
> > if (block)
> > dmxSigioBlock();
> > GetEventList(&events);
> > - nevents = GetProximityEvents(events, pDevice, event, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(pDevice, (InternalEvent*)(events + i)->event);
> > -
> > + QueueProximityEvents(events, pDevice, event, &mask);
> > if (block)
> > dmxSigioUnblock();
> > break;
> > @@ -667,7 +651,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
> > GETDMXINPUTFROMPDEV;
> > xEvent xE;
> > DeviceIntPtr p = dmxLocal->pDevice;
> > - int i, nevents, valuators[3];
> > + int valuators[3];
> > EventListPtr events;
> > ValuatorMask mask;
> >
> > @@ -685,9 +669,7 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
> >
> > GetEventList(&events);
> > /*ErrorF("KEY %d sym %d\n", detail, (int) keySym);*/
> > - nevents = GetKeyboardEvents(events, p, type, detail, NULL);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(p, (InternalEvent*)(events + i)->event);
> > + QueueKeyboardEvents(events, p, type, detail, NULL);
> > return;
> >
> > case ButtonPress:
> > @@ -695,10 +677,8 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
> > detail = dmxGetButtonMapping(dmxLocal, detail);
> > valuator_mask_zero(&mask);
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, p, type, detail,
> > - POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(p, (InternalEvent*)(events + i)->event);
> > + QueuePointerEvents(events, p, type, detail,
> > + POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > return;
> >
> > case MotionNotify:
> > @@ -707,10 +687,8 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
> > valuators[1] = e->xmotion.y;
> > valuators[2] = e->xmotion.state; /* FIXME: WTF?? */
> > valuator_mask_set_range(&mask, 0, 3, valuators);
> > - nevents = GetPointerEvents(events, p, type, detail,
> > - POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(p, (InternalEvent*)(events + i)->event);
> > + QueuePointerEvents(events, p, type, detail,
> > + POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > return;
> >
> > case EnterNotify:
> > diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
> > index f21475f..521542c 100644
> > --- a/hw/kdrive/src/kinput.c
> > +++ b/hw/kdrive/src/kinput.c
> > @@ -1793,7 +1793,7 @@ void
> > KdReleaseAllKeys (void)
> > {
> > #if 0
> > - int key, nEvents, i;
> > + int key;
> > KdKeyboardInfo *ki;
> >
> > KdBlockSigio ();
> > @@ -1804,9 +1804,7 @@ KdReleaseAllKeys (void)
> > if (key_is_down(ki->dixdev, key, KEY_POSTED | KEY_PROCESSED)) {
> > KdHandleKeyboardEvent(ki, KeyRelease, key);
> > GetEventList(&kdEvents);
> > - nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, KeyRelease, key, NULL);
> > - for (i = 0; i < nEvents; i++)
> > - KdQueueEvent (ki->dixdev, (kdEvents + i)->event);
> > + QueueGetKeyboardEvents(kdEvents, ki->dixdev, KeyRelease, key, NULL);
> > }
> > }
> > }
> > @@ -1842,7 +1840,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo *ki,
> > unsigned char key_code;
> > KeyClassPtr keyc = NULL;
> > KeybdCtrl *ctrl = NULL;
> > - int type, nEvents, i;
> > + int type;
> >
> > if (!ki || !ki->dixdev || !ki->dixdev->kbdfeed || !ki->dixdev->key)
> > return;
> > @@ -1863,10 +1861,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo *ki,
> > type = KeyPress;
> >
> > GetEventList(&kdEvents);
> > -
> > - nEvents = GetKeyboardEvents(kdEvents, ki->dixdev, type, key_code, NULL);
> > - for (i = 0; i < nEvents; i++)
> > - KdQueueEvent(ki->dixdev, (InternalEvent *)((kdEvents + i)->event));
> > + QueueKeyboardEvents(kdEvents, ki->dixdev, type, key_code, NULL);
> > }
> > else {
> > ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
> > @@ -1965,7 +1960,6 @@ void
> > _KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
> > int b, int absrel, Bool force)
> > {
> > - int nEvents = 0, i = 0;
> > int valuators[3] = { x, y, z };
> > ValuatorMask mask;
> >
> > @@ -1976,9 +1970,7 @@ _KdEnqueuePointerEvent (KdPointerInfo *pi, int type, int x, int y, int z,
> > valuator_mask_set_range(&mask, 0, 3, valuators);
> >
> > GetEventList(&kdEvents);
> > - nEvents = GetPointerEvents(kdEvents, pi->dixdev, type, b, absrel, &mask);
> > - for (i = 0; i < nEvents; i++)
> > - KdQueueEvent(pi->dixdev, (InternalEvent *)((kdEvents + i)->event));
> > + QueuePointerEvents(kdEvents, pi->dixdev, type, b, absrel, &mask);
> > }
> >
> > void
> > diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> > index 3006ad1..6402d72 100644
> > --- a/hw/xfree86/common/xf86Events.c
> > +++ b/hw/xfree86/common/xf86Events.c
> > @@ -376,7 +376,7 @@ static void
> > xf86ReleaseKeys(DeviceIntPtr pDev)
> > {
> > KeyClassPtr keyc;
> > - int i, j, nevents, sigstate;
> > + int i, sigstate;
> >
> > if (!pDev || !pDev->key)
> > return;
> > @@ -399,9 +399,7 @@ xf86ReleaseKeys(DeviceIntPtr pDev)
> > i++) {
> > if (key_is_down(pDev, i, KEY_POSTED)) {
> > sigstate = xf86BlockSIGIO ();
> > - nevents = GetKeyboardEvents(xf86Events, pDev, KeyRelease, i, NULL);
> > - for (j = 0; j < nevents; j++)
> > - mieqEnqueue(pDev, (InternalEvent*)(xf86Events + j)->event);
> > + QueueKeyboardEvents(xf86Events, pDev, KeyRelease, i, NULL);
> > xf86UnblockSIGIO(sigstate);
> > }
> > }
> > diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
> > index ef4542c..a6c261c 100644
> > --- a/hw/xfree86/common/xf86Xinput.c
> > +++ b/hw/xfree86/common/xf86Xinput.c
> > @@ -1050,11 +1050,7 @@ xf86PostMotionEventM(DeviceIntPtr device,
> > }
> > #endif
> >
> > - nevents = GetPointerEvents(xf86Events, device, MotionNotify, 0, flags, mask);
> > -
> > - for (i = 0; i < nevents; i++) {
> > - mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
> > - }
> > + QueuePointerEvents(xf86Events, device, MotionNotify, 0, flags, mask);
> > }
> >
> > void
> > @@ -1099,13 +1095,8 @@ xf86PostProximityEventM(DeviceIntPtr device,
> > int is_in,
> > const ValuatorMask *mask)
> > {
> > - int i, nevents;
> > -
> > - nevents = GetProximityEvents(xf86Events, device,
> > - is_in ? ProximityIn : ProximityOut, mask);
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
> > -
> > + QueueProximityEvents(xf86Events, device,
> > + is_in ? ProximityIn : ProximityOut, mask);
> > }
> >
> > void
> > @@ -1177,13 +1168,9 @@ xf86PostButtonEventM(DeviceIntPtr device,
> > }
> > #endif
> >
> > - nevents = GetPointerEvents(xf86Events, device,
> > - is_down ? ButtonPress : ButtonRelease, button,
> > - flags, mask);
> > -
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
> > -
> > + QueuePointerEvents(xf86Events, device,
> > + is_down ? ButtonPress : ButtonRelease, button,
> > + flags, mask);
> > }
> >
> > void
> > @@ -1235,8 +1222,6 @@ xf86PostKeyEventM(DeviceIntPtr device,
> > int is_absolute,
> > const ValuatorMask *mask)
> > {
> > - int i = 0, nevents = 0;
> > -
> > #if XFreeXDGA
> > DeviceIntPtr pointer;
> >
> > @@ -1250,12 +1235,9 @@ xf86PostKeyEventM(DeviceIntPtr device,
> > }
> > #endif
> >
> > - nevents = GetKeyboardEvents(xf86Events, device,
> > - is_down ? KeyPress : KeyRelease,
> > - key_code, mask);
> > -
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(device, (InternalEvent*)((xf86Events + i)->event));
> > + QueueKeyboardEvents(xf86Events, device,
> > + is_down ? KeyPress : KeyRelease,
> > + key_code, mask);
> > }
> >
> > void
> > diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
> > index 5c80086..574e4e4 100644
> > --- a/hw/xnest/Events.c
> > +++ b/hw/xnest/Events.c
> > @@ -104,20 +104,16 @@ xnestCollectExposures(void)
> > void
> > xnestQueueKeyEvent(int type, unsigned int keycode)
> > {
> > - int i, n;
> > -
> > GetEventList(&xnestEvents);
> > lastEventTime = GetTimeInMillis();
> > - n = GetKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode, NULL);
> > - for (i = 0; i < n; i++)
> > - mieqEnqueue(xnestKeyboardDevice, (InternalEvent*)(xnestEvents + i)->event);
> > + QueueKeyboardEvents(xnestEvents, xnestKeyboardDevice, type, keycode, NULL);
> > }
> >
> > void
> > xnestCollectEvents(void)
> > {
> > XEvent X;
> > - int i, n, valuators[2];
> > + int valuators[2];
> > ValuatorMask mask;
> > ScreenPtr pScreen;
> > GetEventList(&xnestEvents);
> > @@ -138,20 +134,16 @@ xnestCollectEvents(void)
> > valuator_mask_set_range(&mask, 0, 0, NULL);
> > xnestUpdateModifierState(X.xkey.state);
> > lastEventTime = GetTimeInMillis();
> > - n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
> > - X.xbutton.button, POINTER_RELATIVE, &mask);
> > - for (i = 0; i < n; i++)
> > - mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
> > + QueuePointerEvents(xnestEvents, xnestPointerDevice, ButtonPress,
> > + X.xbutton.button, POINTER_RELATIVE, &mask);
> > break;
> >
> > case ButtonRelease:
> > valuator_mask_set_range(&mask, 0, 0, NULL);
> > xnestUpdateModifierState(X.xkey.state);
> > lastEventTime = GetTimeInMillis();
> > - n = GetPointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
> > - X.xbutton.button, POINTER_RELATIVE, &mask);
> > - for (i = 0; i < n; i++)
> > - mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
> > + QueuePointerEvents(xnestEvents, xnestPointerDevice, ButtonRelease,
> > + X.xbutton.button, POINTER_RELATIVE, &mask);
> > break;
> >
> > case MotionNotify:
> > @@ -159,10 +151,8 @@ xnestCollectEvents(void)
> > valuators[1] = X.xmotion.y;
> > valuator_mask_set_range(&mask, 0, 2, valuators);
> > lastEventTime = GetTimeInMillis();
> > - n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
> > - 0, POINTER_ABSOLUTE, &mask);
> > - for (i = 0; i < n; i++)
> > - mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
> > + QueuePointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
> > + 0, POINTER_ABSOLUTE, &mask);
> > break;
> >
> > case FocusIn:
> > @@ -193,10 +183,8 @@ xnestCollectEvents(void)
> > valuators[1] = X.xcrossing.y;
> > valuator_mask_set_range(&mask, 0, 2, valuators);
> > lastEventTime = GetTimeInMillis();
> > - n = GetPointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
> > - 0, POINTER_ABSOLUTE, &mask);
> > - for (i = 0; i < n; i++)
> > - mieqEnqueue(xnestPointerDevice, (InternalEvent*)(xnestEvents + i)->event);
> > + QueuePointerEvents(xnestEvents, xnestPointerDevice, MotionNotify,
> > + 0, POINTER_ABSOLUTE, &mask);
> > xnestDirectInstallColormaps(pScreen);
> > }
> > }
> > diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
> > index 451129e..f20e37b 100644
> > --- a/hw/xquartz/darwinEvents.c
> > +++ b/hw/xquartz/darwinEvents.c
> > @@ -413,7 +413,6 @@ static void DarwinPrepareValuators(DeviceIntPtr pDev, int *valuators, ScreenPtr
> > void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, float pointer_x, float pointer_y,
> > float pressure, float tilt_x, float tilt_y) {
> > static int darwinFakeMouseButtonDown = 0;
> > - int i, num_events;
> > ScreenPtr screen;
> > int valuators[5];
> >
> > @@ -466,15 +465,13 @@ void DarwinSendPointerEvents(DeviceIntPtr pDev, int ev_type, int ev_button, floa
> > darwinEvents_lock(); {
> > ValuatorMask mask;
> > valuator_mask_set_range(&mask, 0, (pDev == darwinTabletCurrent) ? 5 : 2, valuators);
> > - num_events = GetPointerEvents(darwinEvents, pDev, ev_type, ev_button,
> > - POINTER_ABSOLUTE, &mask);
> > - for(i=0; i<num_events; i++) mieqEnqueue (pDev, (InternalEvent*)darwinEvents[i].event);
> > - if(num_events > 0) DarwinPokeEQ();
> > + QueuePointerEvents(darwinEvents, pDev, ev_type, ev_button,
> > + POINTER_ABSOLUTE, &mask);
> > + DarwinPokeEQ();
> > } darwinEvents_unlock();
> > }
> >
> > void DarwinSendKeyboardEvents(int ev_type, int keycode) {
> > - int i, num_events;
> >
> > if(!darwinEvents) {
> > DEBUG_LOG("DarwinSendKeyboardEvents called before darwinEvents was initialized\n");
> > @@ -482,14 +479,12 @@ void DarwinSendKeyboardEvents(int ev_type, int keycode) {
> > }
> >
> > darwinEvents_lock(); {
> > - num_events = GetKeyboardEvents(darwinEvents, darwinKeyboard, ev_type, keycode + MIN_KEYCODE, NULL);
> > - for(i=0; i<num_events; i++) mieqEnqueue(darwinKeyboard, (InternalEvent*)darwinEvents[i].event);
> > - if(num_events > 0) DarwinPokeEQ();
> > + QueueKeyboardEvents(darwinEvents, darwinKeyboard, ev_type, keycode + MIN_KEYCODE, NULL);
> > + DarwinPokeEQ();
> > } darwinEvents_unlock();
> > }
> >
> > void DarwinSendProximityEvents(int ev_type, float pointer_x, float pointer_y) {
> > - int i, num_events;
> > ScreenPtr screen;
> > DeviceIntPtr pDev = darwinTabletCurrent;
> > int valuators[5];
> > @@ -511,9 +506,8 @@ void DarwinSendProximityEvents(int ev_type, float pointer_x, float pointer_y) {
> > darwinEvents_lock(); {
> > ValuatorMask mask;
> > valuator_mask_set_range(&mask, 0, 5, valuators);
> > - num_events = GetProximityEvents(darwinEvents, pDev, ev_type, &mask);
> > - for(i=0; i<num_events; i++) mieqEnqueue (pDev, (InternalEvent*)darwinEvents[i].event);
> > - if(num_events > 0) DarwinPokeEQ();
> > + QueueProximityEvents(darwinEvents, pDev, ev_type, &mask);
> > + DarwinPokeEQ();
> > } darwinEvents_unlock();
> > }
> >
> > diff --git a/hw/xwin/winkeybd.c b/hw/xwin/winkeybd.c
> > index 912e2de..cf0dea2 100644
> > --- a/hw/xwin/winkeybd.c
> > +++ b/hw/xwin/winkeybd.c
> > @@ -473,7 +473,6 @@ void
> > winSendKeyEvent (DWORD dwKey, Bool fDown)
> > {
> > EventListPtr events;
> > - int i, nevents;
> >
> > /*
> > * When alt-tabing between screens we can get phantom key up messages
> > @@ -485,10 +484,7 @@ winSendKeyEvent (DWORD dwKey, Bool fDown)
> > g_winKeyState[dwKey] = fDown;
> >
> > GetEventList(&events);
> > - nevents = GetKeyboardEvents(events, g_pwinKeyboard, fDown ? KeyPress : KeyRelease, dwKey + MIN_KEYCODE, NULL);
> > -
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(g_pwinKeyboard, (InternalEvent*)events[i].event);
> > + QueueKeyboardEvents(events, g_pwinKeyboard, fDown ? KeyPress : KeyRelease, dwKey + MIN_KEYCODE, NULL);
> >
> > winDebug("winSendKeyEvent: dwKey: %d, fDown: %d, nEvents %d\n",
> > dwKey, fDown, nevents);
> > diff --git a/hw/xwin/winmouse.c b/hw/xwin/winmouse.c
> > index 080e096..0e36687 100644
> > --- a/hw/xwin/winmouse.c
> > +++ b/hw/xwin/winmouse.c
> > @@ -235,7 +235,6 @@ void
> > winMouseButtonsSendEvent (int iEventType, int iButton)
> > {
> > EventListPtr events;
> > - int i, nevents;
> > ValuatorMask mask;
> >
> > if (g_winMouseButtonMap)
> > @@ -243,11 +242,8 @@ winMouseButtonsSendEvent (int iEventType, int iButton)
> >
> > valuator_mask_zero(&mask);
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, g_pwinPointer, iEventType, iButton,
> > - POINTER_RELATIVE, &mask);
> > -
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(g_pwinPointer, (InternalEvent*)events[i].event);
> > + QueuePointerEvents(events, g_pwinPointer, iEventType, iButton,
> > + POINTER_RELATIVE, &mask);
> >
> > #if CYGDEBUG
> > ErrorF("winMouseButtonsSendEvent: iEventType: %d, iButton: %d, nEvents %d\n",
> > @@ -367,7 +363,6 @@ winMouseButtonsHandle (ScreenPtr pScreen,
> > */
> > void winEnqueueMotion(int x, int y)
> > {
> > - int i, nevents;
> > int valuators[2];
> > ValuatorMask mask;
> > EventListPtr events;
> > @@ -378,9 +373,7 @@ void winEnqueueMotion(int x, int y)
> >
> > valuator_mask_set_range(&mask, 0, 2, valuators);
> > GetEventList(&events);
> > - nevents = GetPointerEvents(events, g_pwinPointer, MotionNotify, 0,
> > - POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> > + QueuePointerEvents(events, g_pwinPointer, MotionNotify, 0,
> > + POINTER_ABSOLUTE | POINTER_SCREEN, &mask);
> >
> > - for (i = 0; i < nevents; i++)
> > - mieqEnqueue(g_pwinPointer, (InternalEvent*)events[i].event);
> > }
> > diff --git a/include/input.h b/include/input.h
> > index d0a86aa..ac4c7b9 100644
> > --- a/include/input.h
> > +++ b/include/input.h
> > @@ -455,6 +455,14 @@ extern _X_EXPORT int GetPointerEvents(
> > int flags,
> > const ValuatorMask *mask);
> >
> > +extern _X_EXPORT void QueuePointerEvents(
> > + EventListPtr events,
> > + DeviceIntPtr pDev,
> > + int type,
> > + int buttons,
> > + int flags,
> > + const ValuatorMask *mask);
> > +
> > extern _X_EXPORT int GetKeyboardEvents(
> > EventListPtr events,
> > DeviceIntPtr pDev,
> > @@ -462,12 +470,25 @@ extern _X_EXPORT int GetKeyboardEvents(
> > int key_code,
> > const ValuatorMask *mask);
> >
> > +extern _X_EXPORT void QueueKeyboardEvents(
> > + EventListPtr events,
> > + DeviceIntPtr pDev,
> > + int type,
> > + int key_code,
> > + const ValuatorMask *mask);
> > +
> > extern int GetProximityEvents(
> > EventListPtr events,
> > DeviceIntPtr pDev,
> > int type,
> > const ValuatorMask *mask);
> >
> > +extern void QueueProximityEvents(
> > + EventListPtr events,
> > + DeviceIntPtr pDev,
> > + int type,
> > + const ValuatorMask *mask);
> > +
> > extern void PostSyntheticMotion(
> > DeviceIntPtr pDev,
> > int x,
> > --
> > 1.7.4.2
> >
> > _______________________________________________
> > xorg-devel at lists.x.org: X.Org development
> > Archives: http://lists.x.org/archives/xorg-devel
> > Info: http://lists.x.org/mailman/listinfo/xorg-devel
> >
>
More information about the xorg-devel
mailing list