summaryrefslogtreecommitdiff
path: root/dix/getevents.c
diff options
context:
space:
mode:
Diffstat (limited to 'dix/getevents.c')
-rw-r--r--dix/getevents.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/dix/getevents.c b/dix/getevents.c
index f21bb1b88..b70437122 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -253,12 +253,13 @@ updateMotionHistory(DeviceIntPtr pDev, CARD32 ms, int first_valuator,
*
* Should be used in DIX as:
* xEvent *events = xcalloc(sizeof(xEvent), GetMaximumEventsNum());
+ *
+ * This MUST be absolutely constant, from init until exit.
*/
_X_EXPORT int
GetMaximumEventsNum(void) {
/* Three base events -- raw event and device, plus valuator events.
- * Multiply by two if we're doing key repeats.
- */
+ * Multiply by two if we're doing non-XKB key repeats. */
int ret = 2 + MAX_VALUATOR_EVENTS;
#ifdef XKB
@@ -818,7 +819,7 @@ _X_EXPORT int
GetProximityEvents(EventList *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->event;
/* Sanity checks. */
@@ -868,8 +869,10 @@ GetProximityEvents(EventList *events, DeviceIntPtr pDev, int type,
_X_EXPORT void
SwitchCorePointer(DeviceIntPtr pDev)
{
- if (inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr != pDev)
- inputInfo.pointer->devPrivates[CoreDevicePrivatesIndex].ptr = pDev;
+ if (pDev != dixLookupPrivate(&inputInfo.pointer->devPrivates,
+ CoreDevicePrivateKey))
+ dixSetPrivate(&inputInfo.pointer->devPrivates,
+ CoreDevicePrivateKey, pDev);
}