aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2015-06-09 16:10:39 +0200
committerPierre Ossman <ossman@cendio.se>2015-06-09 16:10:39 +0200
commitb64dbf29aeaaa41eed47ea48e3ccfa9ae563c6f2 (patch)
tree4db4c64e493e9e1cba224423a454c7f1e94faf8c /common
parent671d2effa0b30b8883edb8d7f6f65e23f0908311 (diff)
downloadtigervnc-b64dbf29aeaaa41eed47ea48e3ccfa9ae563c6f2.tar.gz
tigervnc-b64dbf29aeaaa41eed47ea48e3ccfa9ae563c6f2.zip
Avoid losing updates on partial requests
A request may be for only part of the frame buffer, meaning we cannot discard all changes just because we've send out an update. There might still be modified areas remaining that haven't been requested yet.
Diffstat (limited to 'common')
-rw-r--r--common/rfb/VNCSConnectionST.cxx5
1 files changed, 4 insertions, 1 deletions
diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx
index f45ee7e0..c63e6b62 100644
--- a/common/rfb/VNCSConnectionST.cxx
+++ b/common/rfb/VNCSConnectionST.cxx
@@ -1056,8 +1056,11 @@ void VNCSConnectionST::writeFramebufferUpdate()
writeRTTPing();
+ // The request might be for just part of the screen, so we cannot
+ // just clear the entire update tracker.
+ updates.subtract(requested);
+
requested.clear();
- updates.clear();
}
out: