From 5b02a6ca5b31db69d08f2f452494c0f93a6260d9 Mon Sep 17 00:00:00 2001 From: Bartosz Fabianowski Date: Fri, 7 Dec 2007 02:38:14 +0000 Subject: [PATCH] Input: Fix proximity events with valuators Initialise num_events to 1, so we always send a proximity event, and then optionally valuator events. Also make sure mieq can deal with valuator events sent after proximity events. --- dix/getevents.c | 2 +- mi/mieq.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dix/getevents.c b/dix/getevents.c index 08744ae03..40fc7f2a9 100644 --- a/dix/getevents.c +++ b/dix/getevents.c @@ -707,7 +707,7 @@ _X_EXPORT int GetProximityEvents(xEvent *events, DeviceIntPtr pDev, int type, int first_valuator, int num_valuators, int *valuators) { - int num_events = 0; + int num_events = 1; deviceKeyButtonPointer *kbp = (deviceKeyButtonPointer *) events; /* Sanity checks. */ diff --git a/mi/mieq.c b/mi/mieq.c index d946e7d04..c2f687a6b 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -128,7 +128,9 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e) if (oldtail == miEventQueue.head || !(lastkbp->type == DeviceMotionNotify || lastkbp->type == DeviceButtonPress || - lastkbp->type == DeviceButtonRelease) || + lastkbp->type == DeviceButtonRelease || + lastkbp->type == ProximityIn || + lastkbp->type == ProximityOut) || ((lastkbp->deviceid & DEVICE_BITS) != (v->deviceid & DEVICE_BITS))) { ErrorF("mieqEnequeue: out-of-order valuator event; dropping.\n");