aboutsummaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2011-11-08 12:44:10 +0000
committerPierre Ossman <ossman@cendio.se>2011-11-08 12:44:10 +0000
commitbbf955ebd77320fb7f95efc3ac140feced109ed8 (patch)
tree6fe96cab7fa2e0d52689db4c58ce386c0f4183dc /unix
parent5bc20a699359dfba501880bc776f8fd3c8e5b889 (diff)
downloadtigervnc-bbf955ebd77320fb7f95efc3ac140feced109ed8.tar.gz
tigervnc-bbf955ebd77320fb7f95efc3ac140feced109ed8.zip
Reimplement the deferred update handling, this time in a more robust and
well-behaved manner. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4784 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'unix')
-rw-r--r--unix/x0vncserver/PollingManager.cxx4
-rw-r--r--unix/xserver/hw/vnc/Input.cc1
-rw-r--r--unix/xserver/hw/vnc/XserverDesktop.cc39
-rw-r--r--unix/xserver/hw/vnc/XserverDesktop.h4
4 files changed, 2 insertions, 46 deletions
diff --git a/unix/x0vncserver/PollingManager.cxx b/unix/x0vncserver/PollingManager.cxx
index a1534d93..3a040e23 100644
--- a/unix/x0vncserver/PollingManager.cxx
+++ b/unix/x0vncserver/PollingManager.cxx
@@ -123,9 +123,7 @@ void PollingManager::poll(VNCServer *server)
debugBeforePoll();
#endif
- // Perform polling and try update clients if changes were detected.
- if (pollScreen(server))
- server->tryUpdate();
+ pollScreen(server);
#ifdef DEBUG
debugAfterPoll();
diff --git a/unix/xserver/hw/vnc/Input.cc b/unix/xserver/hw/vnc/Input.cc
index f304d0e0..7247eae8 100644
--- a/unix/xserver/hw/vnc/Input.cc
+++ b/unix/xserver/hw/vnc/Input.cc
@@ -207,7 +207,6 @@ void InputDevice::PointerSync(void)
oldCursorPos = cursorPos;
server->setCursorPos(cursorPos);
- server->tryUpdate();
}
static int pointerProc(DeviceIntPtr pDevice, int onoff)
diff --git a/unix/xserver/hw/vnc/XserverDesktop.cc b/unix/xserver/hw/vnc/XserverDesktop.cc
index 60254aec..23dbee0c 100644
--- a/unix/xserver/hw/vnc/XserverDesktop.cc
+++ b/unix/xserver/hw/vnc/XserverDesktop.cc
@@ -64,12 +64,6 @@ using namespace network;
static LogWriter vlog("XserverDesktop");
-rfb::IntParameter deferUpdateTime("DeferUpdate",
- "Time in milliseconds to defer updates",1);
-
-rfb::BoolParameter alwaysSetDeferUpdateTimer("AlwaysSetDeferUpdateTimer",
- "Always reset the defer update timer on every change",false);
-
IntParameter queryConnectTimeout("QueryConnectTimeout",
"Number of seconds to show the Accept Connection dialog before "
"rejecting the connection",
@@ -145,7 +139,7 @@ XserverDesktop::XserverDesktop(ScreenPtr pScreen_,
network::TcpListener* httpListener_,
const char* name, const rfb::PixelFormat &pf,
void* fbptr, int stride)
- : pScreen(pScreen_), deferredUpdateTimer(0),
+ : pScreen(pScreen_),
server(0), httpServer(0),
listener(listener_), httpListener(httpListener_),
cmap(0), deferredUpdateTimerSet(false),
@@ -171,7 +165,6 @@ XserverDesktop::~XserverDesktop()
{
if (!directFbptr)
delete [] data;
- TimerFree(deferredUpdateTimer);
delete inputDevice;
delete httpServer;
delete server;
@@ -441,7 +434,6 @@ void XserverDesktop::setCursor(CursorPtr cursor)
server->setCursor(cursor->bits->width, cursor->bits->height,
Point(cursor->bits->xhot, cursor->bits->yhot),
cursorData, cursorMask);
- server->tryUpdate();
delete [] cursorData;
delete [] cursorMask;
} catch (rdr::Exception& e) {
@@ -449,33 +441,6 @@ void XserverDesktop::setCursor(CursorPtr cursor)
}
}
-CARD32 XserverDesktop::deferredUpdateTimerCallback(OsTimerPtr timer,
- CARD32 now, pointer arg)
-{
- XserverDesktop* desktop = (XserverDesktop*)arg;
- desktop->deferredUpdateTimerSet = false;
- try {
- desktop->server->tryUpdate();
- } catch (rdr::Exception& e) {
- vlog.error("XserverDesktop::deferredUpdateTimerCallback: %s",e.str());
- }
- return 0;
-}
-
-void XserverDesktop::deferUpdate()
-{
- if (deferUpdateTime != 0) {
- if (!deferredUpdateTimerSet || alwaysSetDeferUpdateTimer) {
- deferredUpdateTimerSet = true;
- deferredUpdateTimer = TimerSet(deferredUpdateTimer, 0,
- deferUpdateTime,
- deferredUpdateTimerCallback, this);
- }
- } else {
- server->tryUpdate();
- }
-}
-
void XserverDesktop::add_changed(RegionPtr reg)
{
if (ignoreHooks_) return;
@@ -486,7 +451,6 @@ void XserverDesktop::add_changed(RegionPtr reg)
REGION_NUM_RECTS(reg),
(ShortRect*)REGION_RECTS(reg));
server->add_changed(rfbReg);
- deferUpdate();
} catch (rdr::Exception& e) {
vlog.error("XserverDesktop::add_changed: %s",e.str());
}
@@ -502,7 +466,6 @@ void XserverDesktop::add_copied(RegionPtr dst, int dx, int dy)
REGION_NUM_RECTS(dst),
(ShortRect*)REGION_RECTS(dst));
server->add_copied(rfbReg, rfb::Point(dx, dy));
- deferUpdate();
} catch (rdr::Exception& e) {
vlog.error("XserverDesktop::add_copied: %s",e.str());
}
diff --git a/unix/xserver/hw/vnc/XserverDesktop.h b/unix/xserver/hw/vnc/XserverDesktop.h
index 4a1705ea..39045835 100644
--- a/unix/xserver/hw/vnc/XserverDesktop.h
+++ b/unix/xserver/hw/vnc/XserverDesktop.h
@@ -121,12 +121,8 @@ public:
private:
void setColourMapEntries(int firstColour, int nColours);
- static CARD32 deferredUpdateTimerCallback(OsTimerPtr timer, CARD32 now,
- pointer arg);
- void deferUpdate();
ScreenPtr pScreen;
InputDevice *inputDevice;
- OsTimerPtr deferredUpdateTimer;
rfb::VNCServerST* server;
rfb::HTTPServer* httpServer;
network::TcpListener* listener;