]> source.dussan.org Git - tigervnc.git/commitdiff
Move copy rect handling to EncodeManager
authorPierre Ossman <ossman@cendio.se>
Mon, 18 Jun 2018 14:29:55 +0000 (16:29 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 1 Nov 2018 15:11:42 +0000 (16:11 +0100)
No need to spread things out. Keep all of the handling in a single
place to make things clearer.

common/rfb/EncodeManager.cxx
common/rfb/UpdateTracker.cxx
common/rfb/UpdateTracker.h
common/rfb/VNCSConnectionST.cxx

index 7589cb6a8495a8da448a4ce2cac81861c1696ec5..9288668434665bc1c58d987999558573b30cd684 100644 (file)
@@ -325,6 +325,9 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,
 
     changed = changed_;
 
+    if (!conn->client.useCopyRect)
+      changed.assign_union(copied);
+
     /*
      * We need to render the cursor seperately as it has its own
      * magical pixel buffer, so split it out from the changed region.
@@ -344,7 +347,8 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,
 
     conn->writer()->writeFramebufferUpdateStart(nRects);
 
-    writeCopyRects(copied, copyDelta);
+    if (conn->client.useCopyRect)
+      writeCopyRects(copied, copyDelta);
 
     /*
      * We start by searching for solid rects, which are then removed
index b53b85097ce40675b5a48ced4ded62e32907614a..28e916d55e9908394d84b1a711626566a9879c4a 100644 (file)
@@ -60,32 +60,17 @@ void ClippingUpdateTracker::add_copied(const Region &dest, const Point &delta) {
 
 // SimpleUpdateTracker
 
-SimpleUpdateTracker::SimpleUpdateTracker(bool use_copyrect) {
-  copy_enabled = use_copyrect;
+SimpleUpdateTracker::SimpleUpdateTracker() {
 }
 
 SimpleUpdateTracker::~SimpleUpdateTracker() {
 }
 
-void SimpleUpdateTracker::enable_copyrect(bool enable) {
-  if (!enable && copy_enabled) {
-    add_changed(copied);
-    copied.clear();
-  }
-  copy_enabled=enable;
-}
-
 void SimpleUpdateTracker::add_changed(const Region &region) {
   changed.assign_union(region);
 }
 
 void SimpleUpdateTracker::add_copied(const Region &dest, const Point &delta) {
-  // Do we support copyrect?
-  if (!copy_enabled) {
-    add_changed(dest);
-    return;
-  }
-
   // Is there anything to do?
   if (dest.is_empty()) return;
 
index 8e96d55ed007dbff9cfdf0e9074d15eaa3a188b1..8983b378ae3a3042f55eab8d69ec8029be43e4c4 100644 (file)
@@ -68,11 +68,9 @@ namespace rfb {
 
   class SimpleUpdateTracker : public UpdateTracker {
   public:
-    SimpleUpdateTracker(bool use_copyrect=true);
+    SimpleUpdateTracker();
     virtual ~SimpleUpdateTracker();
 
-    virtual void enable_copyrect(bool enable);
-
     virtual void add_changed(const Region &region);
     virtual void add_copied(const Region &dest, const Point &delta);
     virtual void subtract(const Region& region);
@@ -94,7 +92,6 @@ namespace rfb {
     Region changed;
     Region copied;
     Point copy_delta;
-    bool copy_enabled;
   };
 
 }
index f01b248c45b555614737bc71a86341e68b902d45..34bb1e826a7a3826cfb25b39578fb5f9678b6d18 100644 (file)
@@ -49,7 +49,7 @@ VNCSConnectionST::VNCSConnectionST(VNCServerST* server_, network::Socket *s,
     inProcessMessages(false),
     pendingSyncFence(false), syncFence(false), fenceFlags(0),
     fenceDataLen(0), fenceData(NULL), congestionTimer(this),
-    losslessTimer(this), server(server_), updates(false),
+    losslessTimer(this), server(server_),
     updateRenderedCursor(false), removeRenderedCursor(false),
     continuousUpdates(false), encodeManager(this), pointerEventTime(0),
     clientHasCursor(false),
@@ -972,8 +972,6 @@ void VNCSConnectionST::writeDataUpdate()
   bool needNewUpdateInfo;
   const RenderedCursor *cursor;
 
-  updates.enable_copyrect(client.useCopyRect);
-
   // See what the client has requested (if anything)
   if (continuousUpdates)
     req = cuRegion.union_(requested);