diff options
| author | Henrik Rydberg <rydberg@euromail.se> | 2010-09-21 09:57:48 +0200 |
|---|---|---|
| committer | Henrik Rydberg <rydberg@euromail.se> | 2010-09-21 12:56:17 +0200 |
| commit | 62ca64fe2e64d1ee09c4821a35d8616c0ac0e270 (patch) | |
| tree | aa71f024f3f51f8c2b58d4bb773ab4166e958b8e /src/grail-api.c | |
| parent | d0f7b524153d1b54128b049841f880ee78c2c529 (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/grail-api.c')
| -rw-r--r-- | src/grail-api.c | 15 |
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 | |||
| 47 | static 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 | ||
| 65 | static int handle_abs_events(struct grail *ge, | 58 | static 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 | } |
