summaryrefslogtreecommitdiff
path: root/packages/nonworking/xfree86/xfree86-4.3.0/tinyx-tslib-reset-and-vt-switch-fixes.patch
blob: dc1cc863436ab34d5fa38d74b6a78eca7124ba8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
--- 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);