Saturday, April 22, 2006

Ambiguoity in RFB (VNC) specification

In the RFB protocol specification (the protocol used by VNC), the best non-compressed protocol is by far Hextile. Hextile tile's the screen and provides a mechanism to cheaply enough solid tiles, or tiles that contain subrects. One of the optimizations is that each tile can have a background and foreground color and if they aren't specified, they are implicitly assumed to be the previous tiles color.

There is a special tile mode called SubrectsColoured (or SubrectsColored for us Yankees). In this mode, each sub rectangle has its own color specified before the subrect coordinates. What the specification doesn't make clear, is that this color is treated to be a "foreground" color such that if the next tile relies on an implicit foreground color, the foreground color should be the very last colored subrectangle's color.

I wasted a good part of a day on this and most certainly much longer when I was previously working on a client. I'm going to try and request that the spec be clarified to make this very explicit.