Files
poky/meta/packages/xorg-xserver/xserver-kdrive-xomap/calibrateext.patch

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) {