Removed support for continuous updates, a TightVNC-specific RFB protocol
extension. That extension used to send framebuffer updates continuously, not
waiting for clients' requests. However, it showed bad results with
low-bandwidth connections, due to lack of proper data flow control.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@2581 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/common/rfb/SConnection.cxx b/common/rfb/SConnection.cxx
index 2fde9fb..a61627c 100644
--- a/common/rfb/SConnection.cxx
+++ b/common/rfb/SConnection.cxx
@@ -445,11 +445,6 @@
   scaps.addTightExt(msgTypeFileLastRequestFailed,   "FTS_RQFL");
   */
 
-  // Continuous updates:
-  /* FIXME: EndOfContinuousUpdates message is not supported yet:
-  scaps.addTightExt(msgTypeEndOfContinuousUpdates,  "CUS_EOCU");
-  */
-
   //
   // Advertise support for non-standard client-to-server messages
   //
@@ -470,8 +465,6 @@
   ccaps.addTightExt(msgTypeFileDeleteRequest,       "FTC_RMRQ");
   */
 
-  ccaps.addTightExt(msgTypeEnableContinuousUpdates, "CUC_ENCU");
-
   if (m_videoSelectionEnabled) {
     ccaps.addTightExt(msgTypeVideoRectangleSelection, "VRECTSEL");
   }
diff --git a/common/rfb/SMsgHandler.cxx b/common/rfb/SMsgHandler.cxx
index f18a048..ccc97ad 100644
--- a/common/rfb/SMsgHandler.cxx
+++ b/common/rfb/SMsgHandler.cxx
@@ -50,11 +50,3 @@
 void SMsgHandler::supportsLocalCursor()
 {
 }
-
-void SMsgHandler::enableContinuousUpdates(const Rect& r)
-{
-}
-
-void SMsgHandler::disableContinuousUpdates()
-{
-}
diff --git a/common/rfb/SMsgHandler.h b/common/rfb/SMsgHandler.h
index ff74246..cf3377d 100644
--- a/common/rfb/SMsgHandler.h
+++ b/common/rfb/SMsgHandler.h
@@ -47,9 +47,6 @@
     virtual void setEncodings(int nEncodings, rdr::U32* encodings);
     virtual void framebufferUpdateRequest(const Rect& r, bool incremental);
 
-    virtual void enableContinuousUpdates(const Rect& r);
-    virtual void disableContinuousUpdates();
-
     // InputHandler interface
     // The InputHandler methods will be called for the corresponding messages.
 
diff --git a/common/rfb/SMsgReader.cxx b/common/rfb/SMsgReader.cxx
index 0f5758b..cdca1b9 100644
--- a/common/rfb/SMsgReader.cxx
+++ b/common/rfb/SMsgReader.cxx
@@ -99,20 +99,6 @@
   handler->clientCutText(ca.buf, len);
 }
 
-void SMsgReader::readEnableContinuousUpdates()
-{
-  bool enable = is->readU8();
-  int x = is->readU16();
-  int y = is->readU16();
-  int w = is->readU16();
-  int h = is->readU16();
-  if (enable) {
-    handler->enableContinuousUpdates(Rect(x, y, x+w, y+h));
-  } else {
-    handler->disableContinuousUpdates();
-  }
-}
-
 void SMsgReader::readVideoRectangleSelection()
 {
   (void)is->readU8();
diff --git a/common/rfb/SMsgReader.h b/common/rfb/SMsgReader.h
index 997c07b..145c747 100644
--- a/common/rfb/SMsgReader.h
+++ b/common/rfb/SMsgReader.h
@@ -48,7 +48,6 @@
     virtual void readClientCutText();
 
     // Read TightVNC-specific protocol messages.
-    virtual void readEnableContinuousUpdates();
     virtual void readVideoRectangleSelection();
 
     SMsgReader(SMsgHandler* handler, rdr::InStream* is);
diff --git a/common/rfb/SMsgReaderV3.cxx b/common/rfb/SMsgReaderV3.cxx
index 468d74a..37070a8 100644
--- a/common/rfb/SMsgReaderV3.cxx
+++ b/common/rfb/SMsgReaderV3.cxx
@@ -61,7 +61,6 @@
   case msgTypeFileRenameRequest:
   case msgTypeFileDeleteRequest:        handler->processFTMsg(msgType); break;
 
-  case msgTypeEnableContinuousUpdates:  readEnableContinuousUpdates(); break;
   case msgTypeVideoRectangleSelection:  readVideoRectangleSelection(); break;
 
   default:
diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx
index 7c922cf..95b99fd 100644
--- a/common/rfb/VNCSConnectionST.cxx
+++ b/common/rfb/VNCSConnectionST.cxx
@@ -35,7 +35,6 @@
   : SConnection(server_->securityFactory, reverse), sock(s), server(server_),
     updates(false), image_getter(server->useEconomicTranslate),
     drawRenderedCursor(false), removeRenderedCursor(false),
-    autoUpdatesActive(false),
     pointerEventTime(0), accessRights(AccessDefault),
     startTime(time(0)), m_pFileTransfer(0)
 {
@@ -482,35 +481,6 @@
   writeFramebufferUpdate();
 }
 
-void VNCSConnectionST::enableContinuousUpdates(const Rect& r)
-{
-  // TightVNC-specific EnableContinuousUpdates message is very much like
-  // incremental FramebufferUpdateRequest. So here we copy some code from
-  // VNCSConnectionST::framebufferUpdateRequest().
-
-  if (!(accessRights & AccessView)) return;
-
-  SConnection::framebufferUpdateRequest(r, true);
-
-  autoUpdatesActive = true;
-  autoUpdatedRect = r;
-
-  Region reqRgn(autoUpdatedRect);
-  requested.assign_union(reqRgn);
-
-  writeFramebufferUpdate();
-}
-
-void VNCSConnectionST::disableContinuousUpdates()
-{
-  autoUpdatesActive = false;
-  autoUpdatedRect.clear();
-
-  writeFramebufferUpdate();
-
-  // FIXME: Send EndOfContinuousUpdates message.
-}
-
 void VNCSConnectionST::setInitialColourMap()
 {
   setColourMapEntries(0, 0);
@@ -679,15 +649,6 @@
     if (drawRenderedCursor)
       writeRenderedCursorRect();
     writer()->writeFramebufferUpdateEnd();
-    resetRequestedRegion();
-  }
-}
-
-void VNCSConnectionST::resetRequestedRegion()
-{
-  if (autoUpdatesActive) {
-    requested.reset(autoUpdatedRect);
-  } else {
     requested.clear();
   }
 }
diff --git a/common/rfb/VNCSConnectionST.h b/common/rfb/VNCSConnectionST.h
index a388873..cde2b31 100644
--- a/common/rfb/VNCSConnectionST.h
+++ b/common/rfb/VNCSConnectionST.h
@@ -130,9 +130,6 @@
     virtual void setInitialColourMap();
     virtual void supportsLocalCursor();
 
-    virtual void enableContinuousUpdates(const Rect& r);
-    virtual void disableContinuousUpdates();
-
     // setAccessRights() allows a security package to limit the access rights
     // of a VNCSConnectioST to the server.  These access rights are applied
     // such that the actual rights granted are the minimum of the server's
@@ -154,8 +151,6 @@
     void setCursor();
     void setSocketTimeouts();
 
-    void resetRequestedRegion();
-
     network::Socket* sock;
     CharArray peerEndpoint;
     VNCServerST* server;
@@ -165,9 +160,6 @@
     bool drawRenderedCursor, removeRenderedCursor;
     Rect renderedCursorRect;
 
-    bool autoUpdatesActive;       // continuous updates enabled
-    Rect autoUpdatedRect;         // continuously updated area
-
     std::set<rdr::U32> pressedKeys;
 
     time_t lastEventTime;