Преглед изворни кода

Display partial updates on slow transfers

Normally we only display screen changes once we have the updates for
the entire screen. This may give the impression that the viewer is
hung though. So display the partial data if the update is taking to
long to arrive.
tags/v1.5.90
Pierre Ossman пре 8 година
родитељ
комит
d9b9003d97
3 измењених фајлова са 18 додато и 1 уклоњено
  1. 16
    0
      vncviewer/CConn.cxx
  2. 2
    0
      vncviewer/CConn.h
  3. 0
    1
      vncviewer/Viewport.cxx

+ 16
- 0
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);
}

+ 2
- 0
vncviewer/CConn.h Прегледај датотеку

@@ -81,6 +81,8 @@ private:

static void handleOptions(void *data);

static void handleUpdateTimeout(void *data);

private:
char* serverHost;
int serverPort;

+ 0
- 1
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()
{

Loading…
Откажи
Сачувај