--- xc/programs/Xserver/hw/kdrive/linux/tslib.c.orig 2002-11-05 05:28:06.000000000 +0000 +++ xc/programs/Xserver/hw/kdrive/linux/tslib.c 2003-03-11 21:11:37.000000000 +0000 @@ -119,6 +119,29 @@ int TsInputType; int +TslibEnable (int not_needed_fd, void *closure) +{ + KdMouseInfo *mi = closure; + int fd = 0; + + if(!(tsDev = ts_open(mi->name, 0))) { + fprintf(stderr, "%s() failed to open %s\n", __func__, mi->name ); + return -1; /* XXX Not sure what to return here */ + } + + ts_config(tsDev); + fd=ts_fd(tsDev); + + return fd; +} + +void +TslibDisable (int fd, void *closure) +{ + ts_close(tsDev); +} + +int TslibInit (void) { int i; @@ -128,7 +151,7 @@ if (!TsInputType) TsInputType = KdAllocInputType (); - + for (mi = kdMouseInfo; mi; mi = next) { next = mi->next; @@ -148,14 +171,25 @@ break; } } + } else { + + if(!(tsDev = ts_open(mi->name,0))) + continue; + ts_config(tsDev); + fd=ts_fd(tsDev); + } if (fd > 0 && tsDev != 0) { mi->driver = (void *) fd; mi->inputType = TsInputType; - if (KdRegisterFd (TsInputType, fd, TsRead, (void *) mi)) - n++; + if (KdRegisterFd (TsInputType, fd, TsRead, (void *) mi)) + n++; + + /* Set callbacks for vt switches etc */ + KdRegisterFdEnableDisable (fd, TslibEnable, TslibDisable); + } else if (fd > 0) close(fd);