diff options
author | Constantin Kaplinsky <const@tightvnc.com> | 2008-06-13 18:07:53 +0000 |
---|---|---|
committer | Constantin Kaplinsky <const@tightvnc.com> | 2008-06-13 18:07:53 +0000 |
commit | 6970b2d8b61a78a9d9b7549269096b8f025a8b44 (patch) | |
tree | fe3da30ae3012fdeb0422df77808bbf46c260a89 /common | |
parent | a77e818d9b4db8794b7a051118a0542de660a857 (diff) | |
download | tigervnc-6970b2d8b61a78a9d9b7549269096b8f025a8b44.tar.gz tigervnc-6970b2d8b61a78a9d9b7549269096b8f025a8b44.zip |
Restored the functionality of the VideoPriority parameter. This time, it
should work correctly even over slow networks, when update requests go less
frequently than polling cycles. This version does not give any special
meaning to the value 0, it is equivalent to 1.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2584 3789f03b-4d11-0410-bbf8-ca57d06f2519
Diffstat (limited to 'common')
-rw-r--r-- | common/rfb/ServerCore.cxx | 7 | ||||
-rw-r--r-- | common/rfb/ServerCore.h | 3 | ||||
-rw-r--r-- | common/rfb/UpdateTracker.h | 5 | ||||
-rw-r--r-- | common/rfb/VNCSConnectionST.cxx | 8 | ||||
-rw-r--r-- | common/rfb/VNCServerST.cxx | 16 | ||||
-rw-r--r-- | common/rfb/VNCServerST.h | 1 |
6 files changed, 39 insertions, 1 deletions
diff --git a/common/rfb/ServerCore.cxx b/common/rfb/ServerCore.cxx index 750daae2..19b8fee4 100644 --- a/common/rfb/ServerCore.cxx +++ b/common/rfb/ServerCore.cxx @@ -92,3 +92,10 @@ rfb::BoolParameter rfb::Server::queryConnect ("QueryConnect", "Prompt the local user to accept or reject incoming connections.", false); + +// TightVNC-specific parameters +// FIXME: Disable special video handling when this parameter is 0. +rfb::IntParameter rfb::Server::videoPriority +("VideoPriority", + "Priority of sending updates for video area (0..8)", + 0, 0, 8); diff --git a/common/rfb/ServerCore.h b/common/rfb/ServerCore.h index 68d7b74b..85d4e902 100644 --- a/common/rfb/ServerCore.h +++ b/common/rfb/ServerCore.h @@ -48,6 +48,9 @@ namespace rfb { static BoolParameter sendCutText; static BoolParameter queryConnect; + // TightVNC-specific parameters + static IntParameter videoPriority; + }; }; diff --git a/common/rfb/UpdateTracker.h b/common/rfb/UpdateTracker.h index b6a7d748..9cd99ab1 100644 --- a/common/rfb/UpdateTracker.h +++ b/common/rfb/UpdateTracker.h @@ -85,6 +85,11 @@ namespace rfb { // FIXME: Provide getUpdateInfo() with no clipping, for better efficiency. virtual void getUpdateInfo(UpdateInfo* info, const Region& cliprgn); + // Get coordinates of the video rectangle + virtual const Rect& getVideoArea() const { + return video_area; + } + // Copy the contained updates to another tracker virtual void copyTo(UpdateTracker* to) const; diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 95b99fdd..a9c59f3e 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -541,7 +541,13 @@ void VNCSConnectionST::writeFramebufferUpdate() updates.enable_copyrect(cp.useCopyRect); - server->checkUpdate(); + static int counter = 1; + if (--counter > 0) { + server->checkVideoUpdate(); + } else { + counter = rfb::Server::videoPriority; + server->checkUpdate(); + } // Get the lists of updates. Prior to exporting the data to the `ui' object, // getUpdateInfo() will normalize the `updates' object such way that its diff --git a/common/rfb/VNCServerST.cxx b/common/rfb/VNCServerST.cxx index 93f947cf..dc6c7096 100644 --- a/common/rfb/VNCServerST.cxx +++ b/common/rfb/VNCServerST.cxx @@ -507,6 +507,22 @@ void VNCServerST::checkUpdate() comparer->clear(); } +void VNCServerST::checkVideoUpdate() +{ + const Rect &videoRect = comparer->getVideoArea(); + Region videoRegion(videoRect); + + if (!videoRegion.is_empty()) { + pb->grabRegion(videoRegion); + + std::list<VNCSConnectionST*>::iterator ci, ci_next; + for (ci = clients.begin(); ci != clients.end(); ci = ci_next) { + ci_next = ci; ci_next++; + (*ci)->set_video_area(videoRect); + } + } +} + void VNCServerST::getConnInfo(ListConnInfo * listConn) { listConn->Clear(); diff --git a/common/rfb/VNCServerST.h b/common/rfb/VNCServerST.h index 81ad4ecb..213f6b1f 100644 --- a/common/rfb/VNCServerST.h +++ b/common/rfb/VNCServerST.h @@ -238,6 +238,7 @@ namespace rfb { bool needRenderedCursor(); void checkUpdate(); + void checkVideoUpdate(); SSecurityFactory* securityFactory; QueryConnectionHandler* queryConnectionHandler; |