]> git.pld-linux.org Git - packages/xorg-xserver-server.git/blame - xorg-xserver-server-xtest-pointerscreen.patch
- rel 7; stbr
[packages/xorg-xserver-server.git] / xorg-xserver-server-xtest-pointerscreen.patch
CommitLineData
ae2945da
AM
1From c3e5af42be915b27056644c2df6a4ce30b4ab5f3 Mon Sep 17 00:00:00 2001
2From: Peter Hutterer <peter.hutterer@who-t.net>
3Date: Wed, 25 Mar 2009 15:51:43 +1000
4Subject: [PATCH] Xext: set POINTER_SCREEN flag in XTestFakeInput if necessary. (RH #490984)
5
6The POINTER_SCREEN flag must be set explicitly for XTest core events to avoid
7out-of-range events when the lastSlave was an SD with an explicit axis range.
8Device events sent through XTest don't need this flag, they are expected to be
9in the valuator range of the device anyway.
10
11Red Hat Bug 490984 <https://bugzilla.redhat.com/show_bug.cgi?id=490984>
12
13Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
14---
15 Xext/xtest.c | 14 +++++++++++---
16 1 files changed, 11 insertions(+), 3 deletions(-)
17
18diff --git a/Xext/xtest.c b/Xext/xtest.c
19index a7f3830..3ff02ed 100644
20--- a/Xext/xtest.c
21+++ b/Xext/xtest.c
22@@ -161,6 +161,7 @@ ProcXTestFakeInput(client)
23 int nevents;
24 int i;
25 int base = 0;
26+ int flags = 0;
27
28 nev = (stuff->length << 2) - sizeof(xReq);
29 if ((nev % sizeof(xEvent)) || !nev)
30@@ -211,8 +212,14 @@ ProcXTestFakeInput(client)
31 client->errorValue = ev->u.u.type;
32 return BadValue;
33 }
34+
35+ if (ev->u.u.detail == xFalse)
36+ flags |= POINTER_ABSOLUTE;
37 } else
38+ {
39 firstValuator = 0;
40+ flags |= POINTER_ABSOLUTE;
41+ }
42
43 if (nev == 1 && type == XI_DeviceMotionNotify && !dev->valuator)
44 {
45@@ -281,6 +288,8 @@ ProcXTestFakeInput(client)
46 valuators[1] = ev->u.keyButtonPointer.rootY;
47 numValuators = 2;
48 firstValuator = 0;
49+ if (ev->u.u.detail == xFalse)
50+ flags = POINTER_ABSOLUTE | POINTER_SCREEN;
51 break;
52 default:
53 client->errorValue = ev->u.u.type;
54@@ -378,14 +387,13 @@ ProcXTestFakeInput(client)
55 GetEventList(&events);
56 switch(type) {
57 case MotionNotify:
58- nevents = GetPointerEvents(events, dev, type, 0,
59- (ev->u.u.detail == xFalse) ? POINTER_ABSOLUTE : 0,
60+ nevents = GetPointerEvents(events, dev, type, 0, flags,
61 firstValuator, numValuators, valuators);
62 break;
63 case ButtonPress:
64 case ButtonRelease:
65 nevents = GetPointerEvents(events, dev, type, ev->u.u.detail,
66- POINTER_ABSOLUTE, firstValuator,
67+ flags, firstValuator,
68 numValuators, valuators);
69 break;
70 case KeyPress:
71--
721.6.0.6
73
This page took 0.041335 seconds and 4 git commands to generate.