dix: added isMPdev field to _DeviceIntRec, is used in GetPointerEvents()
mieq: avoid merging events from different devices in mieqEnqueue() xfree86/common isMPdev field used from xf86ActivateDevice(), xf86PostMotionEvent() and xf86PostButtonEvent()
This commit is contained in:
parent
7ce2dc5784
commit
c957a16180
14
Changelog
14
Changelog
|
@ -23,3 +23,17 @@ Files:
|
||||||
configure.ac
|
configure.ac
|
||||||
include/dix-config.h.in
|
include/dix-config.h.in
|
||||||
|
|
||||||
|
|
||||||
|
dix: added isMPdev field to _DeviceIntRec, is used in GetPointerEvents()
|
||||||
|
|
||||||
|
mieq: avoid merging events from different devices in mieqEnqueue()
|
||||||
|
|
||||||
|
xfree86/common
|
||||||
|
isMPdev field used from xf86ActivateDevice(), xf86PostMotionEvent()
|
||||||
|
and xf86PostButtonEvent()
|
||||||
|
|
||||||
|
Files:
|
||||||
|
dix/getevents.c
|
||||||
|
hw/xfree86/common/xf86Xinput.c
|
||||||
|
include/inputstr.h
|
||||||
|
mi/mieq.c
|
||||||
|
|
|
@ -636,7 +636,12 @@ GetPointerEvents(xEvent *events, DeviceIntPtr pDev, int type, int buttons,
|
||||||
num_valuators, valuators);
|
num_valuators, valuators);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
/* MPX devices always send core events */
|
||||||
|
if (pDev->coreEvents || pDev->isMPDev) {
|
||||||
|
#else
|
||||||
if (pDev->coreEvents) {
|
if (pDev->coreEvents) {
|
||||||
|
#endif
|
||||||
events->u.u.type = type;
|
events->u.u.type = type;
|
||||||
events->u.keyButtonPointer.time = ms;
|
events->u.keyButtonPointer.time = ms;
|
||||||
events->u.keyButtonPointer.rootX = x;
|
events->u.keyButtonPointer.rootX = x;
|
||||||
|
|
|
@ -215,7 +215,7 @@ xf86ActivateDevice(LocalDevicePtr local)
|
||||||
|
|
||||||
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
dev->coreEvents |= local->flags & XI86_MP_DEVICE;
|
dev->isMPDev = local->flags & XI86_MP_DEVICE;
|
||||||
#endif
|
#endif
|
||||||
RegisterOtherDevice(dev);
|
RegisterOtherDevice(dev);
|
||||||
|
|
||||||
|
@ -464,7 +464,7 @@ xf86PostMotionEvent(DeviceIntPtr device,
|
||||||
flags = POINTER_RELATIVE | POINTER_ACCELERATE;
|
flags = POINTER_RELATIVE | POINTER_ACCELERATE;
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (device->coreEvents & XI86_MP_DEVICE)
|
if (device->isMPDev)
|
||||||
flags |= POINTER_MULTIPOINTER;
|
flags |= POINTER_MULTIPOINTER;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ xf86PostButtonEvent(DeviceIntPtr device,
|
||||||
flags = POINTER_RELATIVE;
|
flags = POINTER_RELATIVE;
|
||||||
|
|
||||||
#ifdef MPX
|
#ifdef MPX
|
||||||
if (device->coreEvents & XI86_MP_DEVICE)
|
if (device->isMPDev)
|
||||||
flags |= POINTER_MULTIPOINTER;
|
flags |= POINTER_MULTIPOINTER;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -288,6 +288,9 @@ typedef struct _DeviceIntRec {
|
||||||
Bool inited; /* TRUE if INIT returns Success */
|
Bool inited; /* TRUE if INIT returns Success */
|
||||||
Bool enabled; /* TRUE if ON returns Success */
|
Bool enabled; /* TRUE if ON returns Success */
|
||||||
Bool coreEvents; /* TRUE if device also sends core */
|
Bool coreEvents; /* TRUE if device also sends core */
|
||||||
|
#ifdef MPX
|
||||||
|
Bool isMPDev; /* TRUE if multipointer device */
|
||||||
|
#endif
|
||||||
GrabPtr grab; /* the grabber - used by DIX */
|
GrabPtr grab; /* the grabber - used by DIX */
|
||||||
struct {
|
struct {
|
||||||
Bool frozen;
|
Bool frozen;
|
||||||
|
|
|
@ -101,6 +101,12 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
|
||||||
deviceKeyButtonPointer *lastkbp = (deviceKeyButtonPointer *)
|
deviceKeyButtonPointer *lastkbp = (deviceKeyButtonPointer *)
|
||||||
&laste->event[0];
|
&laste->event[0];
|
||||||
|
|
||||||
|
#ifdef MPX
|
||||||
|
/* avoid merging events from different devices */
|
||||||
|
if (e->u.u.type == MotionNotify && pDev->isMPDev)
|
||||||
|
isMotion = pDev->id;
|
||||||
|
else
|
||||||
|
#endif
|
||||||
if (e->u.u.type == MotionNotify)
|
if (e->u.u.type == MotionNotify)
|
||||||
isMotion = inputInfo.pointer->id;
|
isMotion = inputInfo.pointer->id;
|
||||||
else if (e->u.u.type == DeviceMotionNotify)
|
else if (e->u.u.type == DeviceMotionNotify)
|
||||||
|
|
Loading…
Reference in New Issue