Magellan Linux

Annotation of /trunk/tigervnc/patches/tigervnc-1.0.1-r4024.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1201 - (hide annotations) (download)
Mon Nov 22 23:25:59 2010 UTC (13 years, 7 months ago) by niro
File size: 10193 byte(s)
-patches for 1.0.1 against xorg-server-1.7
1 niro 1201 From f058349ae6b31424751ea6b3d773bb5d6dae07d5 Mon Sep 17 00:00:00 2001
2     From: Adam Tkac <atkac@redhat.com>
3     Date: Wed, 10 Mar 2010 17:38:52 +0100
4     Subject: [PATCH 1/2] Merge KeyboardDevice and PointerDevice classes.
5    
6     ---
7     unix/xserver/hw/vnc/Input.cc | 79 +++++++++++++++------------------
8     unix/xserver/hw/vnc/Input.h | 40 +++++++----------
9     unix/xserver/hw/vnc/XserverDesktop.cc | 16 +++----
10     unix/xserver/hw/vnc/XserverDesktop.h | 3 +-
11     4 files changed, 61 insertions(+), 77 deletions(-)
12    
13     diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc
14     index 0596c64..3b60a5f 100644
15     --- a/unix/xserver/hw/vnc/Input.cc
16     +++ b/unix/xserver/hw/vnc/Input.cc
17     @@ -116,21 +116,27 @@ static void enqueueEvents(DeviceIntPtr dev, int n)
18     }
19     }
20    
21     -/* Pointer device methods */
22     -
23     -PointerDevice::PointerDevice(rfb::VNCServerST *_server)
24     +InputDevice::InputDevice(rfb::VNCServerST *_server)
25     : server(_server), oldButtonMask(0)
26     {
27     - dev = AddInputDevice(
28     + pointerDev = AddInputDevice(
29     +#if XORG >= 16
30     + serverClient,
31     +#endif
32     + pointerProc, TRUE);
33     + RegisterPointerDevice(pointerDev);
34     +
35     + keyboardDev = AddInputDevice(
36     #if XORG >= 16
37     - serverClient,
38     + serverClient,
39     #endif
40     - pointerProc, TRUE);
41     - RegisterPointerDevice(dev);
42     + keyboardProc, TRUE);
43     + RegisterKeyboardDevice(keyboardDev);
44     +
45     initEventq();
46     }
47    
48     -void PointerDevice::ButtonAction(int buttonMask)
49     +void InputDevice::PointerButtonAction(int buttonMask)
50     {
51     int i, n;
52    
53     @@ -138,9 +144,9 @@ void PointerDevice::ButtonAction(int buttonMask)
54     if ((buttonMask ^ oldButtonMask) & (1 << i)) {
55     int action = (buttonMask & (1<<i)) ?
56     ButtonPress : ButtonRelease;
57     - n = GetPointerEvents(eventq, dev, action, i + 1,
58     + n = GetPointerEvents(eventq, pointerDev, action, i + 1,
59     POINTER_RELATIVE, 0, 0, NULL);
60     - enqueueEvents(dev, n);
61     + enqueueEvents(pointerDev, n);
62    
63     }
64     }
65     @@ -148,7 +154,7 @@ void PointerDevice::ButtonAction(int buttonMask)
66     oldButtonMask = buttonMask;
67     }
68    
69     -void PointerDevice::Move(const rfb::Point &pos)
70     +void InputDevice::PointerMove(const rfb::Point &pos)
71     {
72     int n, valuators[2];
73    
74     @@ -157,14 +163,14 @@ void PointerDevice::Move(const rfb::Point &pos)
75    
76     valuators[0] = pos.x;
77     valuators[1] = pos.y;
78     - n = GetPointerEvents(eventq, dev, MotionNotify, 0, POINTER_ABSOLUTE, 0,
79     + n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, 0,
80     2, valuators);
81     - enqueueEvents(dev, n);
82     + enqueueEvents(pointerDev, n);
83    
84     cursorPos = pos;
85     }
86    
87     -void PointerDevice::Sync(void)
88     +void InputDevice::PointerSync(void)
89     {
90     if (cursorPos.equals(oldCursorPos))
91     return;
92     @@ -232,19 +238,6 @@ static int pointerProc(DeviceIntPtr pDevice, int onoff)
93     return Success;
94     }
95    
96     -/* KeyboardDevice methods */
97     -
98     -KeyboardDevice::KeyboardDevice(void)
99     -{
100     - dev = AddInputDevice(
101     -#if XORG >= 16
102     - serverClient,
103     -#endif
104     - keyboardProc, TRUE);
105     - RegisterKeyboardDevice(dev);
106     - initEventq();
107     -}
108     -
109     #define IS_PRESSED(keyc, keycode) \
110     ((keyc)->down[(keycode) >> 3] & (1 << ((keycode) & 7)))
111    
112     @@ -458,7 +451,7 @@ static struct altKeysym_t {
113     #define FREE_MAPS
114     #endif
115    
116     -void KeyboardDevice::keyEvent(rdr::U32 keysym, bool down)
117     +void InputDevice::keyEvent(rdr::U32 keysym, bool down)
118     {
119     DeviceIntPtr master;
120     KeyClassPtr keyc;
121     @@ -484,16 +477,16 @@ void KeyboardDevice::keyEvent(rdr::U32 keysym, bool down)
122     }
123    
124     #if XORG >= 17
125     - keyc = dev->u.master->key;
126     + keyc = keyboardDev->u.master->key;
127    
128     - keymap = XkbGetCoreMap(dev);
129     + keymap = XkbGetCoreMap(keyboardDev);
130     if (!keymap) {
131     vlog.error("VNC keyboard device has no map");
132     return;
133     }
134    
135     - if (generate_modkeymap(serverClient, dev, &modmap, &maxKeysPerMod)
136     - != Success) {
137     + if (generate_modkeymap(serverClient, keyboardDev, &modmap,
138     + &maxKeysPerMod) != Success) {
139     vlog.error("generate_modkeymap failed");
140     xfree(keymap->map);
141     xfree(keymap);
142     @@ -502,7 +495,7 @@ void KeyboardDevice::keyEvent(rdr::U32 keysym, bool down)
143    
144     state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
145     #else
146     - keyc = dev->key;
147     + keyc = keyboardDev->key;
148     state = keyc->state;
149     maxKeysPerMod = keyc->maxKeysPerModifier;
150     keymap = &keyc->curKeySyms;
151     @@ -587,24 +580,24 @@ ModeSwitchFound:
152     #if XORG == 15
153     master = inputInfo.keyboard;
154     #else
155     - master = dev->u.master;
156     + master = keyboardDev->u.master;
157     #endif
158     void *slave = dixLookupPrivate(&master->devPrivates,
159     CoreDevicePrivateKey);
160     - if (dev == slave) {
161     + if (keyboardDev == slave) {
162     dixSetPrivate(&master->devPrivates,
163     CoreDevicePrivateKey, NULL);
164     #if XORG == 15
165     - SwitchCoreKeyboard(dev);
166     + SwitchCoreKeyboard(keyboardDev);
167     #else
168     - CopyKeyClass(dev, master);
169     + CopyKeyClass(keyboardDev, master);
170     #endif
171     }
172     #else /* XORG < 17 */
173     - XkbApplyMappingChange(dev, keymap, minKeyCode,
174     + XkbApplyMappingChange(keyboardDev, keymap, minKeyCode,
175     maxKeyCode - minKeyCode + 1,
176     NULL, serverClient);
177     - XkbCopyDeviceKeymap(dev->u.master, dev);
178     + XkbCopyDeviceKeymap(keyboardDev->u.master, keyboardDev);
179     #endif /* XORG < 17 */
180     break;
181     }
182     @@ -632,8 +625,8 @@ ModeSwitchFound:
183     }
184     }
185    
186     - ModifierState shift(dev, ShiftMapIndex);
187     - ModifierState modeSwitch(dev, modeSwitchMapIndex);
188     + ModifierState shift(keyboardDev, ShiftMapIndex);
189     + ModifierState modeSwitch(keyboardDev, modeSwitchMapIndex);
190     if (down) {
191     if (col & 1)
192     shift.press();
193     @@ -649,8 +642,8 @@ ModeSwitchFound:
194    
195     vlog.debug("keycode %d %s", kc, down ? "down" : "up");
196     action = down ? KeyPress : KeyRelease;
197     - n = GetKeyboardEvents(eventq, dev, action, kc);
198     - enqueueEvents(dev, n);
199     + n = GetKeyboardEvents(eventq, keyboardDev, action, kc);
200     + enqueueEvents(keyboardDev, n);
201    
202     /*
203     * When faking a modifier we are putting a keycode (which can
204     diff --git a/unix/xserver/hw/vnc/Input.h b/unix/xserver/hw/vnc/Input.h
205     index 1bfec92..8987085 100644
206     --- a/unix/xserver/hw/vnc/Input.h
207     +++ b/unix/xserver/hw/vnc/Input.h
208     @@ -1,5 +1,6 @@
209     /* Copyright (C) 2009 TightVNC Team
210     - * Copyright (C) 2009 Red Hat, Inc.
211     + * Copyright (C) 2009, 2010 Red Hat, Inc.
212     + * Copyright (C) 2009, 2010 TigerVNC Team
213     *
214     * This is free software; you can redistribute it and/or modify
215     * it under the terms of the GNU General Public License as published by
216     @@ -31,44 +32,37 @@ extern "C" {
217     #include "input.h"
218     };
219    
220     -/* Represents pointer device. */
221     -class PointerDevice {
222     +/* Represents input device (keyboard + pointer) */
223     +class InputDevice {
224     public:
225     - /* Create new PointerDevice instance. */
226     - PointerDevice(rfb::VNCServerST *_server);
227     + /* Create new InputDevice instance */
228     + InputDevice(rfb::VNCServerST *_server);
229    
230     /*
231     * Press or release buttons. Relationship between buttonMask and
232     * buttons is specified in RFB protocol.
233     */
234     - void ButtonAction(int buttonMask);
235     + void PointerButtonAction(int buttonMask);
236    
237     /* Move pointer to target location (point coords are absolute). */
238     - void Move(const rfb::Point &point);
239     + void PointerMove(const rfb::Point &point);
240    
241     /*
242     * Send pointer position to clients. If not called then Move() calls
243     - * won't be visible to clients.
244     + * won't be visible to VNC clients.
245     */
246     - void Sync(void);
247     + void PointerSync(void);
248     +
249     + void KeyboardPress(rdr::U32 keysym) { keyEvent(keysym, true); }
250     + void KeyboardRelease(rdr::U32 keysym) { keyEvent(keysym, false); }
251     private:
252     + void keyEvent(rdr::U32 keysym, bool down);
253     +
254     rfb::VNCServerST *server;
255     - DeviceIntPtr dev;
256     + DeviceIntPtr keyboardDev;
257     + DeviceIntPtr pointerDev;
258     int oldButtonMask;
259     rfb::Point cursorPos, oldCursorPos;
260     };
261    
262     -/* Represents keyboard device. */
263     -class KeyboardDevice {
264     -public:
265     - /* Create new Keyboard device instance. */
266     - KeyboardDevice(void);
267     -
268     - void Press(rdr::U32 keysym) { keyEvent(keysym, true); }
269     - void Release(rdr::U32 keysym) { keyEvent(keysym, false); }
270     -private:
271     - void keyEvent(rdr::U32 keysym, bool down);
272     - DeviceIntPtr dev;
273     -};
274     -
275     #endif
276     diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc
277     index ce8f66b..5971077 100644
278     --- a/unix/xserver/hw/vnc/XserverDesktop.cc
279     +++ b/unix/xserver/hw/vnc/XserverDesktop.cc
280     @@ -164,8 +164,7 @@ XserverDesktop::XserverDesktop(ScreenPtr pScreen_,
281     if (httpListener)
282     httpServer = new FileHTTPServer(this);
283    
284     - pointerDevice = new PointerDevice(server);
285     - keyboardDevice = new KeyboardDevice();
286     + inputDevice = new InputDevice(server);
287     }
288    
289     XserverDesktop::~XserverDesktop()
290     @@ -174,8 +173,7 @@ XserverDesktop::~XserverDesktop()
291     delete [] data;
292     TimerFree(deferredUpdateTimer);
293     TimerFree(dummyTimer);
294     - delete pointerDevice;
295     - delete keyboardDevice;
296     + delete inputDevice;
297     delete httpServer;
298     delete server;
299     }
300     @@ -586,7 +584,7 @@ void XserverDesktop::wakeupHandler(fd_set* fds, int nfds)
301     }
302     }
303    
304     - pointerDevice->Sync();
305     + inputDevice->PointerSync();
306     }
307    
308     int timeout = server->checkTimeouts();
309     @@ -645,8 +643,8 @@ void XserverDesktop::approveConnection(void* opaqueId, bool accept,
310    
311     void XserverDesktop::pointerEvent(const Point& pos, int buttonMask)
312     {
313     - pointerDevice->Move(pos);
314     - pointerDevice->ButtonAction(buttonMask);
315     + inputDevice->PointerMove(pos);
316     + inputDevice->PointerButtonAction(buttonMask);
317     }
318    
319     void XserverDesktop::clientCutText(const char* str, int len)
320     @@ -807,7 +805,7 @@ void XserverDesktop::lookup(int index, int* r, int* g, int* b)
321     void XserverDesktop::keyEvent(rdr::U32 keysym, bool down)
322     {
323     if (down)
324     - keyboardDevice->Press(keysym);
325     + inputDevice->KeyboardPress(keysym);
326     else
327     - keyboardDevice->Release(keysym);
328     + inputDevice->KeyboardRelease(keysym);
329     }
330     diff --git a/unix/xserver/hw/vnc/XserverDesktop.h b/unix/xserver/hw/vnc/XserverDesktop.h
331     index 6e4f609..1c03705 100644
332     --- a/unix/xserver/hw/vnc/XserverDesktop.h
333     +++ b/unix/xserver/hw/vnc/XserverDesktop.h
334     @@ -122,8 +122,7 @@ private:
335     pointer arg);
336     void deferUpdate();
337     ScreenPtr pScreen;
338     - PointerDevice *pointerDevice;
339     - KeyboardDevice *keyboardDevice;
340     + InputDevice *inputDevice;
341     OsTimerPtr deferredUpdateTimer, dummyTimer;
342     rfb::VNCServerST* server;
343     rfb::HTTPServer* httpServer;
344     --
345     1.7.0.1
346