summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHenrik Rydberg <rydberg@euromail.se>2010-09-21 09:57:48 +0200
committerHenrik Rydberg <rydberg@euromail.se>2010-09-21 12:56:17 +0200
commit62ca64fe2e64d1ee09c4821a35d8616c0ac0e270 (patch)
treeaa71f024f3f51f8c2b58d4bb773ab4166e958b8e /src
parentd0f7b524153d1b54128b049841f880ee78c2c529 (diff)
Move input event filter from tail side to head side
There is no need to buffer events that will be ignored later on, so move the event filter to the upstream side. This also allows the event buffer to be used for injected events. Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
Diffstat (limited to 'src')
-rw-r--r--src/grail-api.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/src/grail-api.c b/src/grail-api.c
index 0673120..9503889 100644
--- a/src/grail-api.c
+++ b/src/grail-api.c
@@ -40,14 +40,7 @@ static void tp_event(struct touch_dev *dev,
40 x->pointer_x = ev->value; 40 x->pointer_x = ev->value;
41 if (ev->code == ABS_Y) 41 if (ev->code == ABS_Y)
42 x->pointer_y = ev->value; 42 x->pointer_y = ev->value;
43 } 43 return;
44 evbuf_put(&x->evbuf, ev);
45}
46
47static int extra_filtered(const struct input_event *ev)
48{
49 if (ev->type == EV_ABS) {
50 return 1;
51 } 44 }
52 if (ev->type == EV_KEY) { 45 if (ev->type == EV_KEY) {
53 switch (ev->code) { 46 switch (ev->code) {
@@ -56,10 +49,10 @@ static int extra_filtered(const struct input_event *ev)
56 case BTN_TOOL_DOUBLETAP: 49 case BTN_TOOL_DOUBLETAP:
57 case BTN_TOOL_TRIPLETAP: 50 case BTN_TOOL_TRIPLETAP:
58 case BTN_TOOL_QUADTAP: 51 case BTN_TOOL_QUADTAP:
59 return 1; 52 return;
60 } 53 }
61 } 54 }
62 return 0; 55 evbuf_put(&x->evbuf, ev);
63} 56}
64 57
65static int handle_abs_events(struct grail *ge, 58static int handle_abs_events(struct grail *ge,
@@ -123,8 +116,6 @@ static void tp_sync(struct touch_dev *dev,
123 nevent += handle_abs_events(ge, syn, pointer); 116 nevent += handle_abs_events(ge, syn, pointer);
124 while (!evbuf_empty(&impl->evbuf)) { 117 while (!evbuf_empty(&impl->evbuf)) {
125 evbuf_get(&impl->evbuf, &ev); 118 evbuf_get(&impl->evbuf, &ev);
126 if (extra_filtered(&ev))
127 continue;
128 ge->event(ge, &ev); 119 ge->event(ge, &ev);
129 nevent++; 120 nevent++;
130 } 121 }