From 601ded516fbd45ebf12429f4cde67bf7629f6f91 Mon Sep 17 00:00:00 2001 From: Henrik Rydberg Date: Mon, 28 Mar 2011 19:17:55 +0200 Subject: Do not hold back active gestures Gestures that has once been sent should never be held back. The current code would under some circumstance hold the gesture end event and later discard it. This oneliner solves the problem, which has been around since 241c5ec, Aug 2010. LP: #744391. Signed-off-by: Henrik Rydberg --- src/grail-inserter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/grail-inserter.c') diff --git a/src/grail-inserter.c b/src/grail-inserter.c index fc9076a..651d08d 100644 --- a/src/grail-inserter.c +++ b/src/grail-inserter.c @@ -174,12 +174,13 @@ void gin_frame_end(struct grail *ge, const struct utouch_frame *frame) struct slot_state *s = &gin->state[i]; struct gesture_event ev; grail_mask_set(gin->types, s->type); - if (s->priority < hold[s->slice]) + if (s->priority < hold[s->slice] && !s->sent) continue; while (!gebuf_empty(&s->buf)) { gebuf_get(&s->buf, &ev); gin_send_event(ge, s, &ev, frame); } + s->sent = 1; } grail_mask_foreach(i, gin->used, sizeof(gin->used)) { @@ -208,6 +209,7 @@ int gin_gid_begin(struct grail *ge, int type, int priority, s->slice = 0; } s->timeout = 0; + s->sent = 0; s->id = gin->gestureid++ & MAX_GESTURE_ID; s->status = GRAIL_STATUS_BEGIN; s->nclient = 0; -- cgit v1.2.3