|
Adam Tkac |
b7e5d18 |
Index: unix/vncviewer/CConn.cxx
|
|
Adam Tkac |
b7e5d18 |
===================================================================
|
|
Adam Tkac |
b7e5d18 |
--- unix/vncviewer/CConn.cxx (revision 4003)
|
|
Adam Tkac |
b7e5d18 |
+++ unix/vncviewer/CConn.cxx (revision 4004)
|
|
Adam Tkac |
b7e5d18 |
@@ -33,6 +33,7 @@
|
|
Adam Tkac |
b7e5d18 |
#include <rfb/Password.h>
|
|
Adam Tkac |
b7e5d18 |
#include <rfb/screenTypes.h>
|
|
Adam Tkac |
b7e5d18 |
#include <network/TcpSocket.h>
|
|
Adam Tkac |
b7e5d18 |
+#include <cassert>
|
|
Adam Tkac |
b7e5d18 |
|
|
Adam Tkac |
b7e5d18 |
#include "TXViewport.h"
|
|
Adam Tkac |
b7e5d18 |
#include "DesktopWindow.h"
|
|
Adam Tkac |
b7e5d18 |
@@ -62,7 +63,7 @@
|
|
Adam Tkac |
b7e5d18 |
encodingChange(false), sameMachine(false), fullScreen(::fullScreen),
|
|
Adam Tkac |
b7e5d18 |
ctrlDown(false), altDown(false),
|
|
Adam Tkac |
b7e5d18 |
menuKeysym(0), menu(dpy, this), options(dpy, this), about(dpy), info(dpy),
|
|
Adam Tkac |
b7e5d18 |
- reverseConnection(reverse), firstUpdate(true)
|
|
Adam Tkac |
b7e5d18 |
+ reverseConnection(reverse), firstUpdate(true), pendingUpdate(false)
|
|
Adam Tkac |
b7e5d18 |
{
|
|
Adam Tkac |
b7e5d18 |
CharArray menuKeyStr(menuKey.getData());
|
|
Adam Tkac |
b7e5d18 |
menuKeysym = XStringToKeysym(menuKeyStr.buf);
|
|
Adam Tkac |
b7e5d18 |
@@ -306,8 +307,11 @@
|
|
Adam Tkac |
b7e5d18 |
// one. We cannot do this if we're in the middle of a format change
|
|
Adam Tkac |
b7e5d18 |
// though.
|
|
Adam Tkac |
b7e5d18 |
void CConn::framebufferUpdateStart() {
|
|
Adam Tkac |
b7e5d18 |
- if (!formatChange)
|
|
Adam Tkac |
b7e5d18 |
+ if (!formatChange) {
|
|
Adam Tkac |
b7e5d18 |
+ pendingUpdate = true;
|
|
Adam Tkac |
b7e5d18 |
requestNewUpdate();
|
|
Adam Tkac |
b7e5d18 |
+ } else
|
|
Adam Tkac |
b7e5d18 |
+ pendingUpdate = false;
|
|
Adam Tkac |
b7e5d18 |
}
|
|
Adam Tkac |
b7e5d18 |
|
|
Adam Tkac |
b7e5d18 |
// framebufferUpdateEnd() is called at the end of an update.
|
|
Adam Tkac |
b7e5d18 |
@@ -367,7 +371,7 @@
|
|
Adam Tkac |
b7e5d18 |
|
|
Adam Tkac |
b7e5d18 |
// A format change prevented us from sending this before the update,
|
|
Adam Tkac |
b7e5d18 |
// so make sure to send it now.
|
|
Adam Tkac |
b7e5d18 |
- if (formatChange)
|
|
Adam Tkac |
b7e5d18 |
+ if (formatChange && !pendingUpdate)
|
|
Adam Tkac |
b7e5d18 |
requestNewUpdate();
|
|
Adam Tkac |
b7e5d18 |
|
|
Adam Tkac |
b7e5d18 |
// Compute new settings based on updated bandwidth values
|
|
Adam Tkac |
b7e5d18 |
@@ -536,8 +540,11 @@
|
|
Adam Tkac |
b7e5d18 |
break;
|
|
Adam Tkac |
b7e5d18 |
case ID_REFRESH:
|
|
Adam Tkac |
b7e5d18 |
menu.unmap();
|
|
Adam Tkac |
b7e5d18 |
- writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height),
|
|
Adam Tkac |
b7e5d18 |
- false);
|
|
Adam Tkac |
b7e5d18 |
+ if (!formatChange) {
|
|
Adam Tkac |
b7e5d18 |
+ writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height),
|
|
Adam Tkac |
b7e5d18 |
+ false);
|
|
Adam Tkac |
b7e5d18 |
+ pendingUpdate = true;
|
|
Adam Tkac |
b7e5d18 |
+ }
|
|
Adam Tkac |
b7e5d18 |
break;
|
|
Adam Tkac |
b7e5d18 |
case ID_F8:
|
|
Adam Tkac |
b7e5d18 |
menu.unmap();
|
|
Adam Tkac |
b7e5d18 |
@@ -840,6 +847,10 @@
|
|
Adam Tkac |
b7e5d18 |
void CConn::requestNewUpdate()
|
|
Adam Tkac |
b7e5d18 |
{
|
|
Adam Tkac |
b7e5d18 |
if (formatChange) {
|
|
Adam Tkac |
b7e5d18 |
+
|
|
Adam Tkac |
b7e5d18 |
+ /* Catch incorrect requestNewUpdate calls */
|
|
Adam Tkac |
b7e5d18 |
+ assert(pendingUpdate == false);
|
|
Adam Tkac |
b7e5d18 |
+
|
|
Adam Tkac |
b7e5d18 |
if (fullColour) {
|
|
Adam Tkac |
b7e5d18 |
desktop->setPF(fullColourPF);
|
|
Adam Tkac |
b7e5d18 |
} else {
|
|
Adam Tkac |
b7e5d18 |
Index: unix/vncviewer/CConn.h
|
|
Adam Tkac |
b7e5d18 |
===================================================================
|
|
Adam Tkac |
b7e5d18 |
--- unix/vncviewer/CConn.h (revision 4003)
|
|
Adam Tkac |
b7e5d18 |
+++ unix/vncviewer/CConn.h (revision 4004)
|
|
Adam Tkac |
b7e5d18 |
@@ -132,6 +132,7 @@
|
|
Adam Tkac |
b7e5d18 |
InfoDialog info;
|
|
Adam Tkac |
b7e5d18 |
bool reverseConnection;
|
|
Adam Tkac |
b7e5d18 |
bool firstUpdate;
|
|
Adam Tkac |
b7e5d18 |
+ bool pendingUpdate;
|
|
Adam Tkac |
b7e5d18 |
};
|
|
Adam Tkac |
b7e5d18 |
|
|
Adam Tkac |
b7e5d18 |
#endif
|