summaryrefslogtreecommitdiff
path: root/recipes/xorg-driver/xf86-input-tslib/xserver-174-XGetPointerControl.patch
blob: a1f6ba8f9e8638c2109f3392272191d1e5bb1e4c (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
From Grazvydas Ignotas

At least xserver 1.7.4 crashes on XGetPointerControl request because of xf86-input-tslib:

Program received signal SIGSEGV, Segmentation fault.
#0  0x000355e0 in ProcGetPointerControl (client=0x4a2e58) at devices.c:2122
#1  0x00062fa8 in Dispatch () at dispatch.c:439
#2  0x00022444 in main (argc=4, argv=0xbeebedc4, envp=0xbeebedd8) at main.c:285

This happens because ptrfeed field is not set in device structure from tslib.
To fix this, call InitPtrFeedbackClassDeviceStruct() during DEVICE_INIT to get necessary setup done (as done in other input drivers).

---
diff -ur xf86-input-tslib-0.0.6/src/tslib.c xf86-input-tslib-0.0.6_/src/tslib.c
--- xf86-input-tslib-0.0.6/src/tslib.c	2010-02-09 12:23:22.000000000 +0200
+++ xf86-input-tslib-0.0.6_/src/tslib.c	2010-02-09 12:37:33.000000000 +0200
@@ -103,8 +103,6 @@
 static void
 PointerControlProc(DeviceIntPtr dev, PtrCtrl * ctrl)
 {
-	ErrorF("%s\n", __FUNCTION__);
-	return;
 }
 
 static Bool
@@ -406,6 +404,8 @@
 		xf86MotionHistoryAllocate(pInfo);
 #endif
 
+		if (!InitPtrFeedbackClassDeviceStruct(device, PointerControlProc))
+			return !Success;
 		break;
 
 	case DEVICE_ON: