diff options
author | Pierre Ossman <ossman@cendio.se> | 2011-11-08 12:44:10 +0000 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2011-11-08 12:44:10 +0000 |
commit | bbf955ebd77320fb7f95efc3ac140feced109ed8 (patch) | |
tree | 6fe96cab7fa2e0d52689db4c58ce386c0f4183dc /unix | |
parent | 5bc20a699359dfba501880bc776f8fd3c8e5b889 (diff) | |
download | tigervnc-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.cxx | 4 | ||||
-rw-r--r-- | unix/xserver/hw/vnc/Input.cc | 1 | ||||
-rw-r--r-- | unix/xserver/hw/vnc/XserverDesktop.cc | 39 | ||||
-rw-r--r-- | unix/xserver/hw/vnc/XserverDesktop.h | 4 |
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; |