Merge remote-tracking branch 'whot/multitouch'
This commit is contained in:
commit
e476af417d
|
@ -1159,12 +1159,10 @@ TouchEventRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
|
||||||
DeliverTouchEvents(sourcedev, ti, tel + i, ev->resource);
|
DeliverTouchEvents(sourcedev, ti, tel + i, ev->resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there are no other listeners left, then don't bother sending an
|
/* If there are no other listeners left, and the touchpoint is pending
|
||||||
* ownership change event to no-one; if the touchpoint is pending
|
|
||||||
* finish, then we can just kill it now. */
|
* finish, then we can just kill it now. */
|
||||||
if (ti->num_listeners == 1)
|
if (ti->num_listeners == 1 && ti->pending_finish)
|
||||||
{
|
{
|
||||||
if (ti->pending_finish)
|
|
||||||
TouchEndTouch(sourcedev, ti);
|
TouchEndTouch(sourcedev, ti);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -1178,9 +1176,9 @@ TouchEventRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
|
||||||
ti->num_grabs--;
|
ti->num_grabs--;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If the current owner was removed, deliver the TouchOwnership or TouchBegin
|
/* If the current owner was removed and there are further listeners, deliver
|
||||||
event to the new owner. */
|
* the TouchOwnership or TouchBegin event to the new owner. */
|
||||||
if (was_owner)
|
if (ti->num_listeners > 0 && was_owner)
|
||||||
TouchPuntToNextOwner(sourcedev, ti, ev);
|
TouchPuntToNextOwner(sourcedev, ti, ev);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
@ -1803,7 +1801,9 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
|
||||||
rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev);
|
rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev);
|
||||||
listener->state = LISTENER_HAS_END;
|
listener->state = LISTENER_HAS_END;
|
||||||
}
|
}
|
||||||
if (ti->num_listeners > 1 &&
|
if ((ti->num_listeners > 1 ||
|
||||||
|
(listener->type == LISTENER_GRAB &&
|
||||||
|
xi2mask_isset(xi2mask, dev, XI_TouchOwnership))) &&
|
||||||
(ev->device_event.flags & (TOUCH_ACCEPT|TOUCH_REJECT)) == 0)
|
(ev->device_event.flags & (TOUCH_ACCEPT|TOUCH_REJECT)) == 0)
|
||||||
{
|
{
|
||||||
ev->any.type = ET_TouchUpdate;
|
ev->any.type = ET_TouchUpdate;
|
||||||
|
|
|
@ -776,7 +776,7 @@ XPROTO="xproto >= 7.0.22"
|
||||||
RANDRPROTO="randrproto >= 1.2.99.3"
|
RANDRPROTO="randrproto >= 1.2.99.3"
|
||||||
RENDERPROTO="renderproto >= 0.11"
|
RENDERPROTO="renderproto >= 0.11"
|
||||||
XEXTPROTO="xextproto >= 7.1.99"
|
XEXTPROTO="xextproto >= 7.1.99"
|
||||||
INPUTPROTO="inputproto >= 2.1.99.3"
|
INPUTPROTO="inputproto >= 2.1.99.5"
|
||||||
KBPROTO="kbproto >= 1.0.3"
|
KBPROTO="kbproto >= 1.0.3"
|
||||||
FONTSPROTO="fontsproto"
|
FONTSPROTO="fontsproto"
|
||||||
FIXESPROTO="fixesproto >= 5.0"
|
FIXESPROTO="fixesproto >= 5.0"
|
||||||
|
|
|
@ -691,6 +691,10 @@ eventToDeviceEvent(DeviceEvent *ev, xEvent **xi)
|
||||||
else
|
else
|
||||||
xde->flags = ev->flags;
|
xde->flags = ev->flags;
|
||||||
|
|
||||||
|
if (IsTouchEvent((InternalEvent*)ev) &&
|
||||||
|
ev->flags & TOUCH_POINTER_EMULATED)
|
||||||
|
xde->flags |= XITouchEmulatingPointer;
|
||||||
|
|
||||||
if (ev->key_repeat)
|
if (ev->key_repeat)
|
||||||
xde->flags |= XIKeyRepeat;
|
xde->flags |= XIKeyRepeat;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue