/[pkg-src]/trunk/xorg-server/patches/xorg-server-1.17.1-dix-hook-up-the-unaccelerated-valuator-masks.patch |
Annotation of /trunk/xorg-server/patches/xorg-server-1.17.1-dix-hook-up-the-unaccelerated-valuator-masks.patch
Parent Directory | Revision Log
Revision 2576 -
(hide annotations)
(download)
Mon Jun 15 13:02:17 2015 UTC (9 years, 3 months ago) by niro
File size: 5208 byte(s)
Mon Jun 15 13:02:17 2015 UTC (9 years, 3 months ago) by niro
File size: 5208 byte(s)
-fixed garbage patches
1 | niro | 2576 | From 7504fbd2239257f1a00a1a15d02862eea81f167c Mon Sep 17 00:00:00 2001 |
2 | From: Peter Hutterer <peter.hutterer@who-t.net> | ||
3 | niro | 2575 | Date: Tue, 5 May 2015 14:48:41 +1000 |
4 | Subject: [PATCH] dix: hook up the unaccelerated valuator masks | ||
5 | |||
6 | If present, access the unaccelerated valuator mask values for DGA and XI2 raw | ||
7 | events. | ||
8 | |||
9 | niro | 2576 | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> |
10 | Reviewed-by: Hans de Goede <hdegoede@redhat.com> | ||
11 | --- | ||
12 | niro | 2575 | dix/getevents.c | 31 ++++++++++++++++++++++--------- |
13 | hw/xfree86/common/xf86Xinput.c | 4 ++++ | ||
14 | 2 files changed, 26 insertions(+), 9 deletions(-) | ||
15 | |||
16 | diff --git a/dix/getevents.c b/dix/getevents.c | ||
17 | index 6fb12c5..64bf76e 100644 | ||
18 | niro | 2576 | --- a/dix/getevents.c |
19 | +++ b/dix/getevents.c | ||
20 | @@ -213,14 +213,25 @@ init_raw(DeviceIntPtr dev, RawDeviceEvent *event, Time ms, int type, int detail) | ||
21 | niro | 2575 | } |
22 | |||
23 | static void | ||
24 | niro | 2576 | -set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, double *data) |
25 | +set_raw_valuators(RawDeviceEvent *event, ValuatorMask *mask, | ||
26 | + BOOL use_unaccel, double *data) | ||
27 | niro | 2575 | { |
28 | int i; | ||
29 | |||
30 | niro | 2576 | + use_unaccel = use_unaccel && valuator_mask_has_unaccelerated(mask); |
31 | + | ||
32 | for (i = 0; i < valuator_mask_size(mask); i++) { | ||
33 | niro | 2575 | if (valuator_mask_isset(mask, i)) { |
34 | niro | 2576 | + double v; |
35 | + | ||
36 | SetBit(event->valuators.mask, i); | ||
37 | - data[i] = valuator_mask_get_double(mask, i); | ||
38 | + | ||
39 | + if (use_unaccel) | ||
40 | + v = valuator_mask_get_unaccelerated(mask, i); | ||
41 | + else | ||
42 | + v = valuator_mask_get_double(mask, i); | ||
43 | + | ||
44 | + data[i] = v; | ||
45 | niro | 2575 | } |
46 | } | ||
47 | } | ||
48 | niro | 2576 | @@ -1138,11 +1149,11 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type, |
49 | valuator_mask_copy(&mask, mask_in); | ||
50 | niro | 2575 | |
51 | init_raw(pDev, raw, ms, type, key_code); | ||
52 | niro | 2576 | - set_raw_valuators(raw, &mask, raw->valuators.data_raw); |
53 | + set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); | ||
54 | niro | 2575 | |
55 | niro | 2576 | clipValuators(pDev, &mask); |
56 | niro | 2575 | |
57 | niro | 2576 | - set_raw_valuators(raw, &mask, raw->valuators.data); |
58 | + set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); | ||
59 | niro | 2575 | |
60 | niro | 2576 | event = &events->device_event; |
61 | niro | 2575 | init_device_event(event, pDev, ms); |
62 | niro | 2576 | @@ -1423,9 +1434,11 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, |
63 | niro | 2575 | num_events++; |
64 | |||
65 | init_raw(pDev, raw, ms, type, buttons); | ||
66 | niro | 2576 | - set_raw_valuators(raw, &mask, raw->valuators.data_raw); |
67 | + set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); | ||
68 | niro | 2575 | } |
69 | |||
70 | niro | 2576 | + valuator_mask_drop_unaccelerated(&mask); |
71 | + | ||
72 | niro | 2575 | /* valuators are in driver-native format (rel or abs) */ |
73 | |||
74 | niro | 2576 | if (flags & POINTER_ABSOLUTE) { |
75 | @@ -1438,7 +1451,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, | ||
76 | transformAbsolute(pDev, &mask); | ||
77 | clipAbsolute(pDev, &mask); | ||
78 | if ((flags & POINTER_NORAW) == 0 && raw) | ||
79 | - set_raw_valuators(raw, &mask, raw->valuators.data); | ||
80 | + set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); | ||
81 | niro | 2575 | } |
82 | else { | ||
83 | niro | 2576 | transformRelative(pDev, &mask); |
84 | @@ -1446,7 +1459,7 @@ fill_pointer_events(InternalEvent *events, DeviceIntPtr pDev, int type, | ||
85 | if (flags & POINTER_ACCELERATE) | ||
86 | accelPointer(pDev, &mask, ms); | ||
87 | if ((flags & POINTER_NORAW) == 0 && raw) | ||
88 | - set_raw_valuators(raw, &mask, raw->valuators.data); | ||
89 | + set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); | ||
90 | niro | 2575 | |
91 | niro | 2576 | moveRelative(pDev, flags, &mask); |
92 | niro | 2575 | } |
93 | niro | 2576 | @@ -1951,7 +1964,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, |
94 | niro | 2575 | events++; |
95 | num_events++; | ||
96 | init_raw(dev, raw, ms, type, client_id); | ||
97 | niro | 2576 | - set_raw_valuators(raw, &mask, raw->valuators.data_raw); |
98 | + set_raw_valuators(raw, &mask, TRUE, raw->valuators.data_raw); | ||
99 | niro | 2575 | } |
100 | |||
101 | niro | 2576 | event = &events->device_event; |
102 | @@ -2013,7 +2026,7 @@ GetTouchEvents(InternalEvent *events, DeviceIntPtr dev, uint32_t ddx_touchid, | ||
103 | screeny = dev->spriteInfo->sprite->hotPhys.y; | ||
104 | niro | 2575 | } |
105 | if (need_rawevent) | ||
106 | niro | 2576 | - set_raw_valuators(raw, &mask, raw->valuators.data); |
107 | + set_raw_valuators(raw, &mask, FALSE, raw->valuators.data); | ||
108 | niro | 2575 | |
109 | /* Indirect device touch coordinates are not used for cursor positioning. | ||
110 | * They are merely informational, and are provided in device coordinates. | ||
111 | diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c | ||
112 | index 1fb5b16..5ce4c71 100644 | ||
113 | niro | 2576 | --- a/hw/xfree86/common/xf86Xinput.c |
114 | +++ b/hw/xfree86/common/xf86Xinput.c | ||
115 | @@ -1137,12 +1137,16 @@ xf86CheckMotionEvent4DGA(DeviceIntPtr device, int is_absolute, | ||
116 | niro | 2575 | dx = valuator_mask_get(mask, 0); |
117 | if (is_absolute) | ||
118 | niro | 2576 | dx -= device->last.valuators[0]; |
119 | + else if (valuator_mask_has_unaccelerated(mask)) | ||
120 | + dx = valuator_mask_get_unaccelerated(mask, 0); | ||
121 | niro | 2575 | } |
122 | |||
123 | if (valuator_mask_isset(mask, 1)) { | ||
124 | dy = valuator_mask_get(mask, 1); | ||
125 | if (is_absolute) | ||
126 | niro | 2576 | dy -= device->last.valuators[1]; |
127 | + else if (valuator_mask_has_unaccelerated(mask)) | ||
128 | + dy = valuator_mask_get_unaccelerated(mask, 1); | ||
129 | niro | 2575 | } |
130 | |||
131 | if (DGAStealMotionEvent(device, idx, dx, dy)) | ||
132 | niro | 2576 | -- |
133 | niro | 2575 | 2.4.1 |
134 |