summaryrefslogtreecommitdiff
path: root/src/grail-inserter.c
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2011-03-28 19:17:55 +0200
committerHenrik Rydberg <rydberg@euromail.se>2011-03-28 22:02:11 +0200
commit601ded516fbd45ebf12429f4cde67bf7629f6f91 (patch)
tree067bd67fa184232a27be22c5dd61427831169f45 /src/grail-inserter.c
parent2260b92141802e004cd12346f1b0aabfe159b466 (diff)
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 <rydberg@euromail.se>
Diffstat (limited to 'src/grail-inserter.c')
-rw-r--r--src/grail-inserter.c4
1 files changed, 3 insertions, 1 deletions
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)
174 struct slot_state *s = &gin->state[i]; 174 struct slot_state *s = &gin->state[i];
175 struct gesture_event ev; 175 struct gesture_event ev;
176 grail_mask_set(gin->types, s->type); 176 grail_mask_set(gin->types, s->type);
177 if (s->priority < hold[s->slice]) 177 if (s->priority < hold[s->slice] && !s->sent)
178 continue; 178 continue;
179 while (!gebuf_empty(&s->buf)) { 179 while (!gebuf_empty(&s->buf)) {
180 gebuf_get(&s->buf, &ev); 180 gebuf_get(&s->buf, &ev);
181 gin_send_event(ge, s, &ev, frame); 181 gin_send_event(ge, s, &ev, frame);
182 } 182 }
183 s->sent = 1;
183 } 184 }
184 185
185 grail_mask_foreach(i, gin->used, sizeof(gin->used)) { 186 grail_mask_foreach(i, gin->used, sizeof(gin->used)) {
@@ -208,6 +209,7 @@ int gin_gid_begin(struct grail *ge, int type, int priority,
208 s->slice = 0; 209 s->slice = 0;
209 } 210 }
210 s->timeout = 0; 211 s->timeout = 0;
212 s->sent = 0;
211 s->id = gin->gestureid++ & MAX_GESTURE_ID; 213 s->id = gin->gestureid++ & MAX_GESTURE_ID;
212 s->status = GRAIL_STATUS_BEGIN; 214 s->status = GRAIL_STATUS_BEGIN;
213 s->nclient = 0; 215 s->nclient = 0;