diff options
author | Pierre Ossman <ossman@cendio.se> | 2018-12-10 20:16:12 +0100 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2018-12-10 20:16:12 +0100 |
commit | dfc28f12d334900a681e2c522293e0efa70e8ca4 (patch) | |
tree | 255d089eef52b6d6d7406308af898761150731d7 /common/rfb | |
parent | b03512c65d962485efc9d2b206d293916e1cf01c (diff) | |
download | tigervnc-dfc28f12d334900a681e2c522293e0efa70e8ca4.tar.gz tigervnc-dfc28f12d334900a681e2c522293e0efa70e8ca4.zip |
Always send current screen layout to client
This is what the protocol requires, rather than sending what the
client specified in the request. This should be the same in practice
except for failures and possibly some races.
Diffstat (limited to 'common/rfb')
-rw-r--r-- | common/rfb/SMsgWriter.cxx | 10 | ||||
-rw-r--r-- | common/rfb/SMsgWriter.h | 6 | ||||
-rw-r--r-- | common/rfb/VNCSConnectionST.cxx | 10 |
3 files changed, 7 insertions, 19 deletions
diff --git a/common/rfb/SMsgWriter.cxx b/common/rfb/SMsgWriter.cxx index 766b0cb3..0ca19812 100644 --- a/common/rfb/SMsgWriter.cxx +++ b/common/rfb/SMsgWriter.cxx @@ -138,9 +138,7 @@ bool SMsgWriter::writeExtendedDesktopSize() { return true; } -bool SMsgWriter::writeExtendedDesktopSize(rdr::U16 reason, rdr::U16 result, - int fb_width, int fb_height, - const ScreenSet& layout) { +bool SMsgWriter::writeExtendedDesktopSize(rdr::U16 reason, rdr::U16 result) { ExtendedDesktopSizeMsg msg; if (!client->supportsEncoding(pseudoEncodingExtendedDesktopSize)) @@ -148,9 +146,6 @@ bool SMsgWriter::writeExtendedDesktopSize(rdr::U16 reason, rdr::U16 result, msg.reason = reason; msg.result = result; - msg.fb_width = fb_width; - msg.fb_height = fb_height; - msg.layout = layout; extendedDesktopSizeMsgs.push_back(msg); @@ -415,7 +410,8 @@ void SMsgWriter::writeNoDataRects() for (ri = extendedDesktopSizeMsgs.begin();ri != extendedDesktopSizeMsgs.end();++ri) { writeExtendedDesktopSizeRect(ri->reason, ri->result, - ri->fb_width, ri->fb_height, ri->layout); + client->width(), client->height(), + client->screenLayout()); } extendedDesktopSizeMsgs.clear(); diff --git a/common/rfb/SMsgWriter.h b/common/rfb/SMsgWriter.h index ddddb095..1fe50434 100644 --- a/common/rfb/SMsgWriter.h +++ b/common/rfb/SMsgWriter.h @@ -72,9 +72,7 @@ namespace rfb { // generic update of the current server state, but the second queues a // specific message. bool writeExtendedDesktopSize(); - bool writeExtendedDesktopSize(rdr::U16 reason, rdr::U16 result, - int fb_width, int fb_height, - const ScreenSet& layout); + bool writeExtendedDesktopSize(rdr::U16 reason, rdr::U16 result); bool writeSetDesktopName(); @@ -159,8 +157,6 @@ namespace rfb { typedef struct { rdr::U16 reason, result; - int fb_width, fb_height; - ScreenSet layout; } ExtendedDesktopSizeMsg; std::list<ExtendedDesktopSizeMsg> extendedDesktopSizeMsgs; diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 15b2f9ad..e4e5ab3e 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -716,8 +716,7 @@ void VNCSConnectionST::setDesktopSize(int fb_width, int fb_height, // Don't bother the desktop with an invalid configuration if (!layout.validate(fb_width, fb_height)) { - writer()->writeExtendedDesktopSize(reasonClient, resultInvalid, - fb_width, fb_height, layout); + writer()->writeExtendedDesktopSize(reasonClient, resultInvalid); return; } @@ -726,8 +725,7 @@ void VNCSConnectionST::setDesktopSize(int fb_width, int fb_height, // protocol-wise, but unnecessary. result = server->desktop->setScreenLayout(fb_width, fb_height, layout); - writer()->writeExtendedDesktopSize(reasonClient, result, - fb_width, fb_height, layout); + writer()->writeExtendedDesktopSize(reasonClient, result); // Only notify other clients on success if (result == resultSuccess) { @@ -1127,9 +1125,7 @@ void VNCSConnectionST::screenLayoutChange(rdr::U16 reason) if (state() != RFBSTATE_NORMAL) return; - writer()->writeExtendedDesktopSize(reason, 0, - client.width(), client.height(), - client.screenLayout()); + writer()->writeExtendedDesktopSize(reason, 0); } |