Commit 3d06bfe9 authored by Chase Douglas's avatar Chase Douglas Committed by Chase Douglas

Rename TouchEnsureSprite to TouchBuildSprite and event type checks

The function will be used for building a sprite for pointer emulation
after an explicit device grab. This commit refactors the code so that
TouchBuildSprite will function with any event type and moves the checks
to the caller.
Signed-off-by: default avatarChase Douglas <chase.douglas@canonical.com>
Reviewed-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
parent 2efbed23
......@@ -1625,9 +1625,11 @@ ProcessTouchEvent(InternalEvent *ev, DeviceIntPtr dev)
CheckMotion(&ev->device_event, dev);
/* Make sure we have a valid window trace for event delivery; must be
* called after event type mutation. */
* called after event type mutation. Touch end events are always processed
* in order to end touch records. */
/* FIXME: check this */
if (!TouchEnsureSprite(dev, ti, ev))
if ((type == ET_TouchBegin && !TouchBuildSprite(dev, ti, ev)) ||
(type != ET_TouchEnd && ti->sprite.spriteTraceGood == 0))
return;
/* TouchOwnership events are handled separately from the rest, as they
......
......@@ -542,22 +542,12 @@ TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite)
* TouchBegin events.
*/
Bool
TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev)
TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev)
{
TouchClassPtr t = sourcedev->touch;
SpritePtr sprite = &ti->sprite;
/* We may not have a sprite if there are no applicable grabs or
* event selections, or if they've disappeared, or if all the grab
* owners have rejected the touch. Don't bother delivering motion
* events if not, but TouchEnd events still need to be processed so
* we can call FinishTouchPoint and release it for later use. */
if (ev->any.type == ET_TouchEnd)
return TRUE;
else if (ev->any.type != ET_TouchBegin)
return (sprite->spriteTraceGood > 0);
if (t->mode == XIDirectTouch) {
/* Focus immediately under the touchpoint in direct touch mode.
* XXX: Do we need to handle crossing screens here? */
......
......@@ -563,8 +563,8 @@ extern void TouchAddListener(TouchPointInfoPtr ti, XID resource,
extern Bool TouchRemoveListener(TouchPointInfoPtr ti, XID resource);
extern void TouchSetupListeners(DeviceIntPtr dev, TouchPointInfoPtr ti,
InternalEvent *ev);
extern Bool TouchEnsureSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev);
extern Bool TouchBuildSprite(DeviceIntPtr sourcedev, TouchPointInfoPtr ti,
InternalEvent *ev);
extern Bool TouchBuildDependentSpriteTrace(DeviceIntPtr dev, SpritePtr sprite);
extern int TouchConvertToPointerEvent(const InternalEvent *ev,
InternalEvent *motion,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment