Annotation of /trunk/tigervnc/patches/tigervnc-1.0.1-rh598255.patch
Parent Directory | Revision Log
Revision 1201 -
(hide annotations)
(download)
Mon Nov 22 23:25:59 2010 UTC (13 years, 10 months ago) by niro
File size: 2423 byte(s)
Mon Nov 22 23:25:59 2010 UTC (13 years, 10 months ago) by niro
File size: 2423 byte(s)
-patches for 1.0.1 against xorg-server-1.7
1 | niro | 1201 | Index: unix/vncviewer/CConn.cxx |
2 | =================================================================== | ||
3 | --- unix/vncviewer/CConn.cxx (revision 4003) | ||
4 | +++ unix/vncviewer/CConn.cxx (revision 4004) | ||
5 | @@ -33,6 +33,7 @@ | ||
6 | #include <rfb/Password.h> | ||
7 | #include <rfb/screenTypes.h> | ||
8 | #include <network/TcpSocket.h> | ||
9 | +#include <cassert> | ||
10 | |||
11 | #include "TXViewport.h" | ||
12 | #include "DesktopWindow.h" | ||
13 | @@ -62,7 +63,7 @@ | ||
14 | encodingChange(false), sameMachine(false), fullScreen(::fullScreen), | ||
15 | ctrlDown(false), altDown(false), | ||
16 | menuKeysym(0), menu(dpy, this), options(dpy, this), about(dpy), info(dpy), | ||
17 | - reverseConnection(reverse), firstUpdate(true) | ||
18 | + reverseConnection(reverse), firstUpdate(true), pendingUpdate(false) | ||
19 | { | ||
20 | CharArray menuKeyStr(menuKey.getData()); | ||
21 | menuKeysym = XStringToKeysym(menuKeyStr.buf); | ||
22 | @@ -306,8 +307,11 @@ | ||
23 | // one. We cannot do this if we're in the middle of a format change | ||
24 | // though. | ||
25 | void CConn::framebufferUpdateStart() { | ||
26 | - if (!formatChange) | ||
27 | + if (!formatChange) { | ||
28 | + pendingUpdate = true; | ||
29 | requestNewUpdate(); | ||
30 | + } else | ||
31 | + pendingUpdate = false; | ||
32 | } | ||
33 | |||
34 | // framebufferUpdateEnd() is called at the end of an update. | ||
35 | @@ -367,7 +371,7 @@ | ||
36 | |||
37 | // A format change prevented us from sending this before the update, | ||
38 | // so make sure to send it now. | ||
39 | - if (formatChange) | ||
40 | + if (formatChange && !pendingUpdate) | ||
41 | requestNewUpdate(); | ||
42 | |||
43 | // Compute new settings based on updated bandwidth values | ||
44 | @@ -536,8 +540,11 @@ | ||
45 | break; | ||
46 | case ID_REFRESH: | ||
47 | menu.unmap(); | ||
48 | - writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height), | ||
49 | - false); | ||
50 | + if (!formatChange) { | ||
51 | + writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height), | ||
52 | + false); | ||
53 | + pendingUpdate = true; | ||
54 | + } | ||
55 | break; | ||
56 | case ID_F8: | ||
57 | menu.unmap(); | ||
58 | @@ -840,6 +847,10 @@ | ||
59 | void CConn::requestNewUpdate() | ||
60 | { | ||
61 | if (formatChange) { | ||
62 | + | ||
63 | + /* Catch incorrect requestNewUpdate calls */ | ||
64 | + assert(pendingUpdate == false); | ||
65 | + | ||
66 | if (fullColour) { | ||
67 | desktop->setPF(fullColourPF); | ||
68 | } else { | ||
69 | Index: unix/vncviewer/CConn.h | ||
70 | =================================================================== | ||
71 | --- unix/vncviewer/CConn.h (revision 4003) | ||
72 | +++ unix/vncviewer/CConn.h (revision 4004) | ||
73 | @@ -132,6 +132,7 @@ | ||
74 | InfoDialog info; | ||
75 | bool reverseConnection; | ||
76 | bool firstUpdate; | ||
77 | + bool pendingUpdate; | ||
78 | }; | ||
79 | |||
80 | #endif |