diff options
-rw-r--r-- | vncviewer/CConn.cxx | 16 | ||||
-rw-r--r-- | vncviewer/CConn.h | 2 | ||||
-rw-r--r-- | vncviewer/Viewport.cxx | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/vncviewer/CConn.cxx b/vncviewer/CConn.cxx index f8b45af2..2acb373e 100644 --- a/vncviewer/CConn.cxx +++ b/vncviewer/CConn.cxx @@ -133,6 +133,7 @@ CConn::CConn(const char* vncServerName, network::Socket* socket=NULL) CConn::~CConn() { OptionsDialog::removeCallback(handleOptions); + Fl::remove_timeout(handleUpdateTimeout, this); for (size_t i = 0; i < sizeof(decoders)/sizeof(decoders[0]); i++) delete decoders[i]; @@ -344,6 +345,9 @@ void CConn::framebufferUpdateStart() pendingUpdate = false; requestNewUpdate(); + + // Update the screen prematurely for very slow updates + Fl::add_timeout(1.0, handleUpdateTimeout, this); } // framebufferUpdateEnd() is called at the end of an update. @@ -352,6 +356,7 @@ void CConn::framebufferUpdateStart() // appropriately, and then request another incremental update. void CConn::framebufferUpdateEnd() { + Fl::remove_timeout(handleUpdateTimeout, this); desktop->updateWindow(); if (firstUpdate) { @@ -692,3 +697,14 @@ void CConn::handleOptions(void *data) self->requestNewUpdate(); } } + +void CConn::handleUpdateTimeout(void *data) +{ + CConn *self = (CConn *)data; + + assert(self); + + self->desktop->updateWindow(); + + Fl::repeat_timeout(1.0, handleUpdateTimeout, data); +} diff --git a/vncviewer/CConn.h b/vncviewer/CConn.h index 1b929373..06e3040c 100644 --- a/vncviewer/CConn.h +++ b/vncviewer/CConn.h @@ -81,6 +81,8 @@ private: static void handleOptions(void *data); + static void handleUpdateTimeout(void *data); + private: char* serverHost; int serverPort; diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx index 4bd0758f..ee74e9d6 100644 --- a/vncviewer/Viewport.cxx +++ b/vncviewer/Viewport.cxx @@ -170,7 +170,6 @@ const rfb::PixelFormat &Viewport::getPreferredPF() // Copy the areas of the framebuffer that have been changed (damaged) // to the displayed window. -// FIXME: Make sure this gets called on slow updates void Viewport::updateWindow() { |