]> source.dussan.org Git - tigervnc.git/commitdiff
Stop requiring CConnection::serverInit() to be overridden
authorPierre Ossman <ossman@cendio.se>
Wed, 20 Jun 2018 05:03:10 +0000 (07:03 +0200)
committerPierre Ossman <ossman@cendio.se>
Thu, 1 Nov 2018 15:11:42 +0000 (16:11 +0100)
Add an explicit callback for subclasses to do their startup in. This
makes it easier to do proper ordering, and avoids mistakes.

common/rfb/CConnection.cxx
common/rfb/CConnection.h
vncviewer/CConn.cxx
vncviewer/CConn.h

index a503a2c4e5533b7ea8bb0944d33bf9a24342bf5e..805c8c31498012b427947ef37f2867218c10f561 100644 (file)
@@ -335,6 +335,14 @@ void CConnection::setExtendedDesktopSize(unsigned reason,
   CMsgHandler::setExtendedDesktopSize(reason, result, w, h, layout);
 }
 
+void CConnection::serverInit()
+{
+  state_ = RFBSTATE_NORMAL;
+  vlog.debug("initialisation done");
+
+  initDone();
+}
+
 void CConnection::readAndDecodeRect(const Rect& r, int encoding,
                                     ModifiablePixelBuffer* pb)
 {
@@ -363,10 +371,8 @@ void CConnection::authSuccess()
 {
 }
 
-void CConnection::serverInit()
+void CConnection::initDone()
 {
-  state_ = RFBSTATE_NORMAL;
-  vlog.debug("initialisation done");
 }
 
 void CConnection::fence(rdr::U32 flags, unsigned len, const char data[])
index 1e66a6417e6bbc969ab4fdf903664e4a431d88cc..c996ecf4b7b8451eeef0d628f08f389425a2613f 100644 (file)
@@ -100,6 +100,8 @@ namespace rfb {
                                         int w, int h,
                                         const ScreenSet& layout);
 
+    virtual void serverInit();
+
     virtual void readAndDecodeRect(const Rect& r, int encoding,
                                    ModifiablePixelBuffer* pb);
 
@@ -113,9 +115,11 @@ namespace rfb {
     // authSuccess() is called when authentication has succeeded.
     virtual void authSuccess();
 
-    // serverInit() is called when the ServerInit message is received.  The
-    // derived class must call on to CConnection::serverInit().
-    virtual void serverInit();
+    // initDone() is called when the connection is fully established
+    // and standard messages can be sent. This is called before the
+    // initial FramebufferUpdateRequest giving a derived class the
+    // chance to modify pixel format and settings.
+    virtual void initDone();
 
 
     // Other methods
index fe8e6cf5de92988d9031f78f13a2418d9019961b..23257ee6f8378a8aa41c99776d8296dd3e60e0e6 100644 (file)
@@ -308,13 +308,11 @@ void CConn::socketEvent(FL_SOCKET fd, void *data)
 
 ////////////////////// CConnection callback methods //////////////////////
 
-// serverInit() is called when the serverInit message has been received.  At
+// initDone() is called when the serverInit message has been received.  At
 // this point we create the desktop window and display it.  We also tell the
 // server the pixel format and encodings to use and request the first update.
-void CConn::serverInit()
+void CConn::initDone()
 {
-  CConnection::serverInit();
-
   // If using AutoSelect with old servers, start in FullColor
   // mode. See comment in autoSelectFormatAndEncoding. 
   if (server.beforeVersion(3, 8) && autoSelect)
index 5988a94fb6a0f65c45ab39c2fca8b3230d53e29a..66ef1d028b1faba79cf05caeb9d9fca18e36395c 100644 (file)
@@ -51,7 +51,7 @@ public:
   static void socketEvent(FL_SOCKET fd, void *data);
 
   // CConnection callback methods
-  void serverInit();
+  void initDone();
 
   void setDesktopSize(int w, int h);
   void setExtendedDesktopSize(unsigned reason, unsigned result,