V0.15 (17/4/2016): vnc_serv.zip (105,659 bytes). Suitable for RISC OS 3.5 and above. Now finally ARMv7 compatible!
This is Hernik Bjerregaard Pedersen's VNC server with improvements added by Crispian Daniels, David Llewellyn-Jones, and now myself.
Changes made to this version, compared to the previous:
Changes made in version 0.14:
- Fixed vncserv_start to first stop the server if it is currently running
- Fixed frontend_start and server_start return codes not being checked
- Fixed circular buffer not being reset correctly when being released/resized
Full source is included.
- Fixed a bug where pointer update messages being generated under IRQ were being written into the send buffer while other data was being prepared in the foreground, causing corrupt packets to be sent over the network. Pointer updates are now sent from the foreground, along with all other messages.
- Fixed a bug where if you disconnect while the server is sending data, the server may not send any new data if you reconnect
- Fixed 32bpp hextile encoding using the wrong threshold when deciding if encoding a tile as hextile is worth it or not in terms of network bandwidth
- Fixed SO_REUSEADDR not being set correctly on the listen socket
- Added some profiling calls to the source to allow server performance to be measured (can be enabled in profiling.h). Uses a HAL timer and the debug out (SysLog).
- Rewrote transmit buffer handling to use a circular buffer instead of shuffling the data around all the time.
- The internet event is now used to monitor the transmit buffer of the socket, allowing for much greater network throughput than before
- Server update logic has been moved from a 50Hz tick to 100Hz to try and get further responsiveness gains
- Optimised pixel translation code for a couple of common cases
- Added clipboard/copy-and-paste support. This uses the Wimp clipboard protocol, and so only works when in the desktop. Note that the VNC protocol implemented only supports plain Latin1 text, and vncserver does not currently perform any character translation. If necessary, clipboard support can be disabled via '*vncserv_enable_clipboard 0'
- Some misc bits of source tidying