Browse Source

Merge client resize capabilities

No need to have one setting for each extension. All the client code
needs to indicate is if it supports resize. The common code can then
map this to relevant extensions.
tags/v1.9.90
Pierre Ossman 5 years ago
parent
commit
6ea58ba97b

+ 22
- 2
common/rfb/CConnection.cxx View File

@@ -73,6 +73,11 @@ void CConnection::setFramebuffer(ModifiablePixelBuffer* fb)
{
decoder.flush();

if (fb) {
assert(fb->width() == server.width());
assert(fb->height() == server.height());
}

if ((framebuffer != NULL) && (fb != NULL)) {
Rect rect;

@@ -334,6 +339,11 @@ void CConnection::setDesktopSize(int w, int h)
writer()->writeEnableContinuousUpdates(true, 0, 0,
server.width(),
server.height());

resizeFramebuffer();
assert(framebuffer != NULL);
assert(framebuffer->width() == server.width());
assert(framebuffer->height() == server.height());
}

void CConnection::setExtendedDesktopSize(unsigned reason,
@@ -349,6 +359,11 @@ void CConnection::setExtendedDesktopSize(unsigned reason,
writer()->writeEnableContinuousUpdates(true, 0, 0,
server.width(),
server.height());

resizeFramebuffer();
assert(framebuffer != NULL);
assert(framebuffer->width() == server.width());
assert(framebuffer->height() == server.height());
}

void CConnection::endOfContinuousUpdates()
@@ -452,6 +467,11 @@ void CConnection::initDone()
{
}

void CConnection::resizeFramebuffer()
{
assert(false);
}

void CConnection::refreshFramebuffer()
{
forceNonincremental = true;
@@ -575,10 +595,10 @@ void CConnection::updateEncodings()
encodings.push_back(pseudoEncodingCursor);
encodings.push_back(pseudoEncodingXCursor);
}
if (server.supportsDesktopResize)
if (server.supportsDesktopResize) {
encodings.push_back(pseudoEncodingDesktopSize);
if (server.supportsExtendedDesktopSize)
encodings.push_back(pseudoEncodingExtendedDesktopSize);
}
if (server.supportsLEDState)
encodings.push_back(pseudoEncodingLEDState);


+ 5
- 0
common/rfb/CConnection.h View File

@@ -127,6 +127,11 @@ namespace rfb {
// returning.
virtual void initDone() = 0;

// resizeFramebuffer() is called whenever the framebuffer
// dimensions or the screen layout changes. A subclass must make
// sure the pixel buffer has been updated once this call returns.
virtual void resizeFramebuffer();


// Other methods


+ 1
- 1
common/rfb/ServerParams.cxx View File

@@ -26,7 +26,7 @@ using namespace rfb;
ServerParams::ServerParams()
: majorVersion(0), minorVersion(0),
supportsLocalCursor(false),
supportsDesktopResize(false), supportsExtendedDesktopSize(false),
supportsDesktopResize(false),
supportsLEDState(false), supportsQEMUKeyEvent(false),
supportsSetDesktopSize(false), supportsFence(false),
supportsContinuousUpdates(false),

+ 0
- 1
common/rfb/ServerParams.h View File

@@ -71,7 +71,6 @@ namespace rfb {

bool supportsLocalCursor;
bool supportsDesktopResize;
bool supportsExtendedDesktopSize;
bool supportsLEDState;
bool supportsQEMUKeyEvent;


+ 0
- 1
vncviewer/CConn.cxx View File

@@ -83,7 +83,6 @@ CConn::CConn(const char* vncServerName, network::Socket* socket=NULL)
server.supportsLocalCursor = true;

server.supportsDesktopResize = true;
server.supportsExtendedDesktopSize = true;

server.supportsLEDState = true;


Loading…
Cancel
Save