]> git.pld-linux.org Git - packages/tigervnc.git/blame - tigervnc-rh633931.patch
- sort patches
[packages/tigervnc.git] / tigervnc-rh633931.patch
CommitLineData
13a33bd9
JR
1diff -up tigervnc-1.0.90-20100813svn4123/unix/xserver/hw/vnc/Input.cc.rh633931 tigervnc-1.0.90-20100813svn4123/unix/xserver/hw/vnc/Input.cc
2--- tigervnc-1.0.90-20100813svn4123/unix/xserver/hw/vnc/Input.cc.rh633931 2010-09-16 11:29:33.670000097 +0200
3+++ tigervnc-1.0.90-20100813svn4123/unix/xserver/hw/vnc/Input.cc 2010-09-16 12:59:31.530002411 +0200
4@@ -271,6 +271,19 @@ void InputDevice::initInputDevice(void)
5 #endif
6 }
7
8+static inline void pressKey(DeviceIntPtr dev, int kc, bool down, const char *msg)
9+{
10+ int action;
11+ unsigned int n;
12+
13+ if (msg != NULL)
14+ vlog.debug("%s %d %s", msg, kc, down ? "down" : "up");
15+
16+ action = down ? KeyPress : KeyRelease;
17+ n = GetKeyboardEvents(eventq, dev, action, kc);
18+ enqueueEvents(dev, n);
19+}
20+
21 #define IS_PRESSED(keyc, keycode) \
22 ((keyc)->down[(keycode) >> 3] & (1 << ((keycode) & 7)))
23
24@@ -294,7 +307,7 @@ public:
25 ~ModifierState()
26 {
27 for (int i = 0; i < nKeys; i++)
28- generateXKeyEvent(keys[i], !pressed);
29+ pressKey(dev, keys[i], !pressed, "fake keycode");
30 delete [] keys;
31 }
32
33@@ -389,22 +402,10 @@ private:
34 if (keycode) {
35 if (!keys) keys = new int[maxKeysPerMod];
36 keys[nKeys++] = keycode;
37- generateXKeyEvent(keycode, down);
38+ pressKey(dev, keycode, down, "fake keycode");
39 }
40 }
41
42- void generateXKeyEvent(int keycode, bool down)
43- {
44- int n, action;
45-
46- action = down ? KeyPress : KeyRelease;
47- n = GetKeyboardEvents(eventq, dev, action, keycode);
48- enqueueEvents(dev, n);
49-
50- vlog.debug("fake keycode %d %s", keycode,
51- down ? "down" : "up");
52- }
53-
54 int modIndex;
55 int nKeys;
56 int *keys;
57@@ -503,8 +504,8 @@ void InputDevice::keyEvent(rdr::U32 keys
58 KeyCode minKeyCode, maxKeyCode;
59 KeyCode *modmap = NULL;
60 int mapWidth;
61- unsigned int i, n;
62- int j, k, action, state, maxKeysPerMod;
63+ unsigned int i;
64+ int j, k, state, maxKeysPerMod;
65
66 initInputDevice();
67
68@@ -691,12 +692,14 @@ ModeSwitchFound:
69 modeSwitch.release();
70 }
71 }
72- }
73+ /*
74+ * Ensure ModifierState objects are not destroyed before
75+ * pressKey call, otherwise fake modifier keypress can be lost.
76+ */
77+ pressKey(keyboardDev, kc, down, "keycode");
78+ } else
79+ pressKey(keyboardDev, kc, down, "keycode");
80
81- vlog.debug("keycode %d %s", kc, down ? "down" : "up");
82- action = down ? KeyPress : KeyRelease;
83- n = GetKeyboardEvents(eventq, keyboardDev, action, kc);
84- enqueueEvents(keyboardDev, n);
85
86 FREE_MAPS;
87
This page took 0.094941 seconds and 4 git commands to generate.