The VNC server uses two threads to manage a connection: one thread sends
periodic updates to the client, and another handles client requests.
For the most part they are unsynchonized, and we may be simultaneously
handling a request and pushing an update.
Fix two bugs in the RFB_ENCODING_ZLIB message handler:
- Ensure that we don't reinitialize the zlib stream if multiple messages are received.
- Don't indicate to the sending thread that zlib compression is to be used until we've finished initializing the stream.
This is not a complete fix but I wanted to have something small that can
easily be MFCed. In particular, it is insufficient on platforms where
stores can be reordered (which I guess is relevant since there is an
arm64 port).