mirror of
https://git.yoctoproject.org/poky
synced 2026-03-13 10:49:40 +01:00
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@2067 311d38ba-8fff-0310-9ca6-ca027cbcb966
125 lines
3.5 KiB
Diff
125 lines
3.5 KiB
Diff
---
|
|
configure |38107 -----------------------------------------------------------
|
|
configure.ac | 2 -
|
|
hw/kdrive/linux/tslib.c | 68 ++++++++++++++++++++++++++----------------------
|
|
2 files changed, 39 insertions(+), 31 deletions(-)
|
|
|
|
|
|
Index: xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c
|
|
===================================================================
|
|
--- xorg-server-1.1.99.3.orig/hw/kdrive/linux/tslib.c 2007-01-30 00:44:13.000000000 +0000
|
|
+++ xorg-server-1.1.99.3/hw/kdrive/linux/tslib.c 2007-01-30 21:55:52.000000000 +0000
|
|
@@ -47,6 +47,10 @@
|
|
|
|
#define TSLIB_QUEUE_SIZE 3
|
|
|
|
+/* For XCalibrate extension */
|
|
+void (*tslib_raw_event_hook)(int x, int y, int pressure, void *closure);
|
|
+void *tslib_raw_event_closure;
|
|
+
|
|
struct TslibPrivate {
|
|
int fd;
|
|
int lastx, lasty;
|
|
@@ -76,6 +80,19 @@ TsRead (int fd, void *closure)
|
|
unsigned long flags = 0;
|
|
int discard = 0;
|
|
|
|
+ if (tslib_raw_event_hook)
|
|
+ {
|
|
+ /* XCalibrate Ext */
|
|
+ if (ts_read_raw(private->tsDev, &event, 1) == 1)
|
|
+ {
|
|
+ tslib_raw_event_hook (event.x,
|
|
+ event.y,
|
|
+ event.pressure,
|
|
+ tslib_raw_event_closure);
|
|
+ }
|
|
+ return;
|
|
+ }
|
|
+
|
|
if (!private->tsDev) {
|
|
DebugF("[tslib] EXTREME BADNESS: TsRead called while tsDev is null!\n");
|
|
return;
|
|
@@ -322,14 +339,14 @@ TsRead (int fd, void *closure)
|
|
}
|
|
}
|
|
|
|
-/* must always be NULL-terminated. */
|
|
-char *valid_ts_names[] = {
|
|
- "ADS784x Touchscreen",
|
|
- "omap-ts",
|
|
- "TSC2301 touchscreen",
|
|
- NULL
|
|
+static char *TsNames[] = {
|
|
+ NULL, /* set via TSLIB_TSDEVICE */
|
|
+ "/dev/ts",
|
|
+ "/dev/touchscreen/0",
|
|
};
|
|
|
|
+#define NUM_TS_NAMES (sizeof (TsNames) / sizeof (TsNames[0]))
|
|
+
|
|
#define TS_NAME_SIZE 32
|
|
|
|
static Status
|
|
@@ -383,11 +400,10 @@ TslibDisable (KdPointerInfo *pi)
|
|
private->tsDev = NULL;
|
|
}
|
|
|
|
-
|
|
static Status
|
|
TslibInit (KdPointerInfo *pi)
|
|
{
|
|
- int fd = 0, i = 0;
|
|
+ int fd = 0, i = 0, j = 0;
|
|
char devpath[PATH_MAX], devname[TS_NAME_SIZE];
|
|
DIR *inputdir = NULL;
|
|
struct dirent *inputent = NULL;
|
|
@@ -397,33 +413,25 @@ TslibInit (KdPointerInfo *pi)
|
|
return !Success;
|
|
|
|
if (!pi->path || strcmp(pi->path, "auto") == 0) {
|
|
- if (!(inputdir = opendir("/dev/input"))) {
|
|
- ErrorF("[tslib/TslibInit]: couldn't open /dev/input!\n");
|
|
- return BadMatch;
|
|
- }
|
|
|
|
- while ((inputent = readdir(inputdir))) {
|
|
- if (strncmp(inputent->d_name, "event", 5) != 0)
|
|
- continue;
|
|
+ if ((TsNames[0] = getenv("TSLIB_TSDEVICE")) == NULL)
|
|
+ j++;
|
|
+
|
|
+ for (i = j; i < NUM_TS_NAMES; i++)
|
|
+ {
|
|
+ struct tsdev *tsDev;
|
|
|
|
- snprintf(devpath, PATH_MAX, "/dev/input/%s", inputent->d_name);
|
|
- fd = open(devpath, O_RDWR);
|
|
+ if(!(tsDev = ts_open(TsNames[i], 0)))
|
|
+ continue;
|
|
|
|
- if (!ioctl(fd, EVIOCGNAME(sizeof(devname)), devname)) {
|
|
- close(fd);
|
|
+ if (ts_config(tsDev))
|
|
continue;
|
|
- }
|
|
- close(fd);
|
|
|
|
- for (i = 0; valid_ts_names[i]; i++) {
|
|
- if (strcmp(devname, valid_ts_names[i]) == 0) {
|
|
- pi->path = KdSaveString(devpath);
|
|
- break;
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
- closedir(inputdir);
|
|
+ ts_close(tsDev);
|
|
+
|
|
+ pi->path = KdSaveString(TsNames[i]);
|
|
+ break;
|
|
+ }
|
|
}
|
|
|
|
if (!pi->path || strcmp(pi->path, "auto") == 0) {
|