Let CMsgHandler::serverInit() handle initial set up
Avoid using the callbacks used for runtime changes for the initial
setup. They weren't really useful anyway as you could not allocate
a framebuffer without also knowing the pixel format. So make things
more clear by letting serverInit() get the initial settings.
diff --git a/common/rfb/CConnection.h b/common/rfb/CConnection.h
index c996ecf..7623c02 100644
--- a/common/rfb/CConnection.h
+++ b/common/rfb/CConnection.h
@@ -100,7 +100,9 @@
int w, int h,
const ScreenSet& layout);
- virtual void serverInit();
+ virtual void serverInit(int width, int height,
+ const PixelFormat& pf,
+ const char* name);
virtual void readAndDecodeRect(const Rect& r, int encoding,
ModifiablePixelBuffer* pb);
@@ -118,8 +120,10 @@
// 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();
+ // chance to modify pixel format and settings. The derived class
+ // must also make sure it has provided a valid framebuffer before
+ // returning.
+ virtual void initDone() = 0;
// Other methods