diff options
author | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2008-02-13 11:05:34 +0000 |
---|---|---|
committer | Rolf Leggewie <oe-devel@rolf.leggewie.biz> | 2008-02-13 11:05:34 +0000 |
commit | ea0ed6298a772fd62b0248717b04ac116f8221b4 (patch) | |
tree | a4c2871e80eca904630d9de22a72d7875717ace8 /packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch | |
parent | 32e690935379493f478d1b7a1cd43fce486083da (diff) |
tslib: consolidate, taking extra care 0038f02055e33a3dad0ba914de112ce9450c45d4 is dealt with properly
Diffstat (limited to 'packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch')
-rw-r--r-- | packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch b/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch deleted file mode 100644 index 4bd0a05531..0000000000 --- a/packages/tslib/tslib-1.0/tslib-input_raw-grab_events.patch +++ /dev/null @@ -1,120 +0,0 @@ -This patch adds support for "EVIOCGRAB" on the input device, which -tells the kernel _not_ to deliver events of the touchscreen to -/dev/input/mice. - -This is probably what most people want, since unprocessed raw touchscreen -events should not be converted to emulated PS/2 mouse movements. - -Signed-off-by: Harald Welte <laforge@openmoko.org> - -Index: a/plugins/input-raw.c -=================================================================== ---- a/plugins/input-raw.c (revision 49) -+++ b/plugins/input-raw.c (working copy) -@@ -18,6 +18,7 @@ - - #include <errno.h> - #include <stdio.h> -+#include <limits.h> - - #include <stdlib.h> - #ifdef HAVE_UNISTD_H -@@ -33,6 +34,9 @@ - - #include "tslib-private.h" - -+#define GRAB_EVENTS_WANTED 1 -+#define GRAB_EVENTS_ACTIVE 2 -+ - struct tslib_input { - struct tslib_module_info module; - -@@ -42,6 +46,7 @@ - - int sane_fd; - int using_syn; -+ int grab_events; - }; - - static int check_fd(struct tslib_input *i) -@@ -64,6 +69,14 @@ - - if (bit & (1 << EV_SYN)) - i->using_syn = 1; -+ -+ if (i->grab_events == GRAB_EVENTS_WANTED) { -+ if (ioctl(ts->fd, EVIOCGRAB, (void *)1)) { -+ fprintf(stderr, "Unable to grab selected input device\n"); -+ return -1; -+ } -+ i->grab_events = GRAB_EVENTS_ACTIVE; -+ } - - return 0; - } -@@ -222,6 +235,15 @@ - - static int ts_input_fini(struct tslib_module_info *inf) - { -+ struct tslib_input *i = (struct tslib_input *)inf; -+ struct tsdev *ts = inf->dev; -+ -+ if (i->grab_events == GRAB_EVENTS_ACTIVE) { -+ if (ioctl(ts->fd, EVIOCGRAB, (void *)0)) { -+ fprintf(stderr, "Unable to un-grab selected input device\n"); -+ } -+ } -+ - free(inf); - return 0; - } -@@ -231,6 +253,36 @@ - .fini = ts_input_fini, - }; - -+static int parse_raw_grab(struct tslib_module_info *inf, char *str, void *data) -+{ -+ struct tslib_input *i = (struct tslib_input *)inf; -+ unsigned long v; -+ int err = errno; -+ -+ v = strtoul(str, NULL, 0); -+ -+ if (v == ULONG_MAX && errno == ERANGE) -+ return -1; -+ -+ errno = err; -+ switch ((int)data) { -+ case 1: -+ if (v) -+ i->grab_events = GRAB_EVENTS_WANTED; -+ break; -+ default: -+ return -1; -+ } -+ return 0; -+} -+ -+static const struct tslib_vars raw_vars[] = -+{ -+ { "grab_events", (void *)1, parse_raw_grab }, -+}; -+ -+#define NR_VARS (sizeof(raw_vars) / sizeof(raw_vars[0])) -+ - TSAPI struct tslib_module_info *mod_init(struct tsdev *dev, const char *params) - { - struct tslib_input *i; -@@ -245,5 +297,12 @@ - i->current_p = 0; - i->sane_fd = 0; - i->using_syn = 0; -+ i->grab_events = 0; -+ -+ if (tslib_parse_vars(&i->module, raw_vars, NR_VARS, params)) { -+ free(i); -+ return NULL; -+ } -+ - return &(i->module); - } |