Ensure touch is ended when last listener is rejected
Currently, the touch is only logically ended if the touch has physically ended. If the touch hasn't physically ended, the touch record is never ended. If there aren't any more listeners, we don't need to keep the dix touch record around any more. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
d0449851d1
commit
e175971a6f
|
@ -1234,14 +1234,6 @@ TouchRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, XID resource,
|
|||
}
|
||||
}
|
||||
|
||||
/* If there are no other listeners left, and the touchpoint is pending
|
||||
* finish, then we can just kill it now. */
|
||||
if (ti->num_listeners == 1 && ti->pending_finish) {
|
||||
TouchEndTouch(sourcedev, ti);
|
||||
CheckOldestTouch(sourcedev);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Remove the resource from the listener list, updating
|
||||
* ti->num_listeners, as well as ti->num_grabs if it was a grab. */
|
||||
if (TouchRemoveListener(ti, resource)) {
|
||||
|
@ -1254,6 +1246,8 @@ TouchRejected(DeviceIntPtr sourcedev, TouchPointInfoPtr ti, XID resource,
|
|||
* the TouchOwnership or TouchBegin event to the new owner. */
|
||||
if (ev && ti->num_listeners > 0 && was_owner)
|
||||
TouchPuntToNextOwner(sourcedev, ti, ev);
|
||||
else if (ti->num_listeners == 0)
|
||||
TouchEndTouch(sourcedev, ti);
|
||||
|
||||
CheckOldestTouch(sourcedev);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user