1 diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc
2 --- tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc.xorg111 2011-08-09 23:16:36.000000000 +0200
3 +++ tigervnc-1.1.0/unix/xserver/hw/vnc/Input.cc 2011-09-14 13:22:19.540000049 +0200
4 @@ -82,10 +82,11 @@ static KeyCode KeysymToKeycode(KeySymsPt
5 /* Event queue is shared between all devices. */
7 static xEvent *eventq = NULL;
10 static EventList *eventq = NULL;
14 static void initEventq(void)
16 /* eventq is never free()-ed because it exists during server life. */
17 @@ -100,7 +101,9 @@ static void initEventq(void)
21 +#endif /* XORG < 111 */
24 static void enqueueEvents(DeviceIntPtr dev, int n)
27 @@ -122,6 +125,7 @@ static void enqueueEvents(DeviceIntPtr d
31 +#endif /* XORG < 111 */
33 InputDevice::InputDevice(rfb::VNCServerST *_server)
34 : server(_server), oldButtonMask(0)
35 @@ -141,12 +145,17 @@ InputDevice::InputDevice(rfb::VNCServerS
37 RegisterKeyboardDevice(keyboardDev);
44 void InputDevice::PointerButtonAction(int buttonMask)
54 @@ -160,13 +169,17 @@ void InputDevice::PointerButtonAction(in
56 n = GetPointerEvents(eventq, pointerDev, action, i + 1,
57 POINTER_RELATIVE, 0, 0, NULL);
59 + enqueueEvents(pointerDev, n);
61 valuator_mask_set_range(&mask, 0, 0, NULL);
62 n = GetPointerEvents(eventq, pointerDev, action, i + 1,
63 POINTER_RELATIVE, &mask);
65 enqueueEvents(pointerDev, n);
68 + valuator_mask_set_range(&mask, 0, 0, NULL);
69 + QueuePointerEvents(pointerDev, action, i + 1,
70 + POINTER_RELATIVE, &mask);
75 @@ -175,7 +188,10 @@ void InputDevice::PointerButtonAction(in
77 void InputDevice::PointerMove(const rfb::Point &pos)
79 - int n, valuators[2];
87 @@ -190,12 +206,16 @@ void InputDevice::PointerMove(const rfb:
89 n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, 0,
92 + enqueueEvents(pointerDev, n);
94 valuator_mask_set_range(&mask, 0, 2, valuators);
95 n = GetPointerEvents(eventq, pointerDev, MotionNotify, 0, POINTER_ABSOLUTE,
98 enqueueEvents(pointerDev, n);
100 + valuator_mask_set_range(&mask, 0, 2, valuators);
101 + QueuePointerEvents(pointerDev, MotionNotify, 0, POINTER_ABSOLUTE, &mask);
106 @@ -299,14 +319,20 @@ void InputDevice::initInputDevice(void)
107 static inline void pressKey(DeviceIntPtr dev, int kc, bool down, const char *msg)
115 vlog.debug("%s %d %s", msg, kc, down ? "down" : "up");
117 action = down ? KeyPress : KeyRelease;
118 - n = GetKeyboardEvents(eventq, dev, action, kc);
120 + n = GetKeyboardEvents(eventq, dev, action, kc, NULL);
121 enqueueEvents(dev, n);
123 + QueueKeyboardEvents(dev, action, kc, NULL);
127 #define IS_PRESSED(keyc, keycode) \
128 @@ -341,8 +367,11 @@ public:
129 int state, maxKeysPerMod, keycode;
131 KeyCode *modmap = NULL;
132 + DeviceIntPtr master;
134 - state = XkbStateFieldFromRec(&dev->u.master->key->xkbInfo->state);
135 + master = GetMaster(dev, MASTER_KEYBOARD);
137 + state = XkbStateFieldFromRec(&master->key->xkbInfo->state);
139 KeyClassPtr keyc = dev->key;
141 @@ -379,8 +408,10 @@ public:
144 KeyCode *modmap = NULL;
145 + DeviceIntPtr master;
147 - keyc = dev->u.master->key;
148 + master = GetMaster(dev, MASTER_KEYBOARD);
149 + keyc = master->key;
150 state = XkbStateFieldFromRec(&keyc->xkbInfo->state);
153 @@ -565,9 +596,7 @@ static inline int isModifier(KeySymsPtr
155 void InputDevice::keyEvent(rdr::U32 keysym, bool down)
161 KeySymsPtr keymap = NULL;
163 @@ -596,7 +625,8 @@ void InputDevice::keyEvent(rdr::U32 keys
167 - keyc = keyboardDev->u.master->key;
168 + master = GetMaster(keyboardDev, MASTER_KEYBOARD);
169 + keyc = master->key;
171 keymap = XkbGetCoreMap(keyboardDev);
173 @@ -753,7 +783,7 @@ ModeSwitchFound:
174 XkbApplyMappingChange(keyboardDev, keymap, minKeyCode,
175 maxKeyCode - minKeyCode + 1,
177 - XkbCopyDeviceKeymap(keyboardDev->u.master, keyboardDev);
178 + XkbCopyDeviceKeymap(master, keyboardDev);
179 #endif /* XORG < 17 */
182 diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h
183 --- tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h.xorg111 2011-08-09 23:16:36.000000000 +0200
184 +++ tigervnc-1.1.0/unix/xserver/hw/vnc/xorg-version.h 2011-09-12 16:51:36.958000000 +0200
187 #elif XORG_VERSION_CURRENT < ((1 * 10000000) + (10 * 100000) + (99 * 1000))
189 +#elif XORG_VERSION_CURRENT < ((1 * 10000000) + (11 * 100000) + (99 * 1000))
192 #error "X.Org newer than 1.10 is not supported"
194 diff -up tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc
195 --- tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc.xorg111 2011-08-09 23:16:36.000000000 +0200
196 +++ tigervnc-1.1.0/unix/xserver/hw/vnc/xvnc.cc 2011-09-14 13:49:23.751000543 +0200
197 @@ -211,7 +211,11 @@ static void vfbFreeFramebufferMemory(vfb
204 +void ddxGiveUp(enum ExitCode error)
209 @@ -221,9 +225,17 @@ void ddxGiveUp()
216 +AbortDDX(enum ExitCode error)
227 @@ -668,8 +680,13 @@ vfbUninstallColormap(ColormapPtr pmap)
229 if (pmap->mid != pmap->pScreen->defColormap)
232 curpmap = (ColormapPtr) LookupIDByType(pmap->pScreen->defColormap,
235 + dixLookupResourceByType((pointer *) &curpmap, pmap->pScreen->defColormap,
236 + RT_COLORMAP, serverClient, DixUnknownAccess);
238 (*pmap->pScreen->InstallColormap)(curpmap);