Initial checkin of libvncserver external library
Change-Id: Ie7c0947e3184490a566a63981ca9baaad2fbcaa3
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..a5d0a89
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,237 @@
+0.9.9
+ - Overall changes:
+ * Added noVNC HTML5 VNC viewer (http://kanaka.github.com/noVNC/) connect possibility
+ to our http server. Pure JavaScript, no Java plugin required anymore! (But a
+ recent browser...)
+ * Added a GTK+ VNC viewer example.
+
+ - LibVNCServer/LibVNCClient:
+ * Added support to build for Google Android.
+ * Complete IPv6 support in both LibVNCServer and LibVNCClient.
+
+ - LibVNCServer:
+ * Split two event-loop related functions out of the rfbProcessEvents() mechanism.
+ This is required to be able to do proper event loop integration with Qt. Idea was
+ taken from Vino's libvncserver fork.
+ * Added TightPNG (http://wiki.qemu.org/VNC_Tight_PNG) encoding support. Like the
+ original Tight encoding, this still uses JPEG, but ZLIB encoded rects are encoded
+ with PNG here.
+ * Added suport for serving VNC sessions through WebSockets
+ (http://en.wikipedia.org/wiki/WebSocket), a web technology providing for multiplexing
+ bi-directional, full-duplex communications channels over a single TCP connection.
+ * Support connections from the Mac OS X built-in VNC client to LibVNCServer
+ instances running with no password.
+ * Replaced the Tight encoder with a TurboVNC one which is tremendously faster in most
+ cases, especially with high-color video or 3D workloads.
+ (http://www.virtualgl.org/pmwiki/uploads/About/tighttoturbo.pdf)
+
+ - LibVNCClient:
+ * Added support to only listen for reverse connections on a specific IP address.
+ * Support for using OpenSSL instead of GnuTLS. This could come in handy on embedded
+ devices where only this TLS implementation is available.
+ * Added support to connect to UltraVNC Single Click servers.
+
+0.9.8.2
+ - Fixed a regression that crept in with the Apple Remote Desktop support.
+
+0.9.8.1
+ - Fixed an ABI compatibility issue.
+
+0.9.8
+ - Overall changes:
+ * Automagically generated API documentation using doxygen.
+ * Added support for pkg-config.
+ * Fixed Mingw32 cross compilation.
+ * Fixed CMake build system.
+
+ - LibVNCServer/LibVNCClient:
+ * All files used by _both_ LibVNCServer and LibVNCClient were put into
+ a 'common' directory, reducing code duplication.
+ * Implemented xvp VNC extension.
+ * Updated minilzo library used for Ultra encoding to ver 2.04.
+ According to the minilzo README, this brings a significant
+ speedup on 64-bit architechtures.
+
+ - LibVNCServer:
+ * Thread safety for ZRLE, Zlib, Tight, RRE, CoRRE and Ultra encodings.
+ This makes all VNC encodings safe to use with a multithreaded server.
+ * A DisplayFinishedHook for LibVNCServer. If set, this hook gets called
+ just before rfbSendFrameBufferUpdate() returns.
+ * Fix for tight security type for RFB 3.8 in TightVNC file transfer
+ (Debian Bug #517422).
+
+ - LibVNCClient:
+ * Unix sockets support.
+ * Anonymous TLS security type support.
+ * VeNCrypt security type support.
+ * MSLogon security type support.
+ * ARD (Apple Remote Desktop) security type support.
+ * UltraVNC Repeater support.
+ * A new FinishedFrameBufferUpdate callback that is invoked after each
+ complete framebuffer update.
+ * A new non-forking listen (reverse VNC) function that works under
+ Windows.
+ * IPv6 support. LibVNCClient is now able to connect to IPv6 VNC servers.
+ * IP QoS support. This enables setting the DSCP/Traffic Class field of
+ IP/IPv6 packets sent by a client. For example starting a client with
+ -qosdscp 184 marks all outgoing traffic for expedited forwarding.
+ Implementation for Win32 is still a TODO, though.
+ * Fixed hostname resolution problems under Windows.
+
+ - SDLvncviewer
+ * Is now resizable and can do key repeat, mouse wheel scrolling
+ and clipboard copy and paste.
+
+ - LinuxVNC:
+ * Fix for no input possible because of ctrl key being stuck.
+ Issue was reported as Debian bug #555988.
+
+
+0.9.7
+ Mark sent me patches to no longer need C++ for ZRLE encoding!
+ added --disable-cxx Option for configure
+ x11vnc changes from Karl Runge:
+ - Changed all those whimpy printf(...)'s into manly fprintf(stdxxx,...)'s.
+
+ - Added -q switch (quiet) to suppress printing all the debug-looking output.
+
+ - Added -bg switch to fork into background after everything is set up.
+ (checks for LIBVNCSERVER_HAVE_FORK and LIBVNCSERVER_HAVE_SETSID)
+
+ - Print this string out to stdout: 'PORT=XXXX' (usually XXXX = 5900).
+ Combining with -bg, easy to write a ssh/rsh wrapper with something like:
+ port=`ssh $host "x11vnc -bg .."` then run vncviewer based on $port output.
+ (tunneling the vnc traffic thru ssh a bit more messy, but doable)
+
+ - Quite a bit of code to be more careful when doing 8bpp indexed color, e.g.
+ not assuming NCOLORS is 256, handling 8bit TrueColor and Direct Color, etc
+ (I did all this probably in April, not quite clear in my mind now, but
+ I did test it out a fair amount on my old Sparcstation 20 wrt a user's
+ questions).
+ introduce rfbErr for Errors (Erik)
+ make rfbLog overridable (suggested by Erik)
+ don't reutrn on EINTR in WriteExact()/ReadExact() (suggested by Erik)
+ use AX_PREFIX_CONFIG_H to prefix constants in config.h to avoid
+ name clashes (also suggested by Erik)
+ transformed Bool, KeySym, Pixel to rfbBool, rfbKeySym, rfbPixel
+ (as suggested by Erik)
+ purged exit() calls (suggested by Erik)
+ fixed bug with maxRectsPerUpdate and Tight Encoding (these are incompatible)
+ checked sync with TightVNC 1.2.8:
+ viewonly/full passwords; if given a list, only the first is a full one
+ vncRandomBytes is a little more secure now
+ new weights for tight encoding
+ checked sync with RealVNC 3.3.7
+ introduced maxRectsPerUpdate
+ added first alpha version of LibVNCClient
+ added simple and simple15 example (really simple examples)
+ finally got around to fix configure in CVS
+ long standing http bug (.jar was sent twice) fixed by a friend of Karl named Mike
+ http options in cargs
+ when closing a client and no longer listening for new ones, don't crash
+ fixed a bug with ClientConnectionGone
+ endianness is checked at configure time
+ fixed a bug that prevented the first client from being closed
+ fixed that annoying "libvncserver-config --link" bug
+ make rfbReverseByte public (for rdp2vnc)
+ fixed compilation on OS X, IRIX, Solaris
+ install target for headers is now ${prefix}/include/rfb ("#include <rfb/rfb.h>")
+ renamed "sraRegion.h" to "rfbregion.h"
+ CARD{8,16,32} are more standard uint{8,16,32}_t now
+ fixed LinuxVNC colour handling
+ fixed a bug with pthreads where the connection was not closed
+ moved vncterm to main package (LinuxVNC included)
+ portability fixes (IRIX, OSX, Solaris)
+ more portable way to determine endianness and types of a given size
+ through autoconf based methods
+0.5
+ rpm packaging through autoconf
+ autoconf'ed the whole package (including optional support for zlib,
+ pthreads and libjpeg as well as zrle/c++)
+ moved appropriate files to contrib/ and examples/ respectively
+ fixed long standing cargs bug (Justin "Zippy" Dearing)
+ Even better x11vnc from Karl J. Runge! (supports different kbd layouts of
+ client/server)
+ Better x11vnc from Karl J. Runge!
+ fixed severe bug (Const Kaplinsky)
+ got patch from Const Kaplisnky with CursorPosUpdate encoding and some Docs
+ sync'ed with newest RealVNC (ZRLE encoding)
+ a HTTP request for tunnelling was added (to fool strict web proxies)
+ sync'ed with TightVNC 1.2.5
+0.4
+ support for NewFB from Const Kaplinsky
+ memory leaks squashed (localtime pseudo leak is still there :-)
+ small improvements for OSXvnc (still not working correctly)
+ synced with TightVNC 1.2.3
+ solaris compile cleanups
+ many x11vnc improvements
+ added backchannel, an encoding which needs special clients to pass
+ arbitrary data to the client
+ changes from Tim Jansen regarding multi threading and client blocking
+ as well as C++ compliancy
+ x11vnc can be controlled by starting again with special options if compiling
+ with LOCAL_CONTROL defined
+0.3
+ added x11vnc, a x0rfbserver clone
+ regard deferUpdateTime in processEvents, if usec<0
+ initialize deferUpdateTime (memory "leak"!)
+ changed command line handling (arguments are parsed and then removed)
+ added very simple example: zippy
+ added rfbDrawLine, rfbDrawPixel
+0.2
+ inserted a deferUpdate mechanism (X11 independent).
+ removed deletion of requestedRegion
+ added rfbLoadConsoleFont
+ fixed font colour handling.
+ added rfbSelectBox
+ added rfbDrawCharWithClip to allow for clipping and a background colour.
+ fixed font colours
+ added rfbFillRect
+ added IO function to check password.
+ rfbNewClient now sets the socket in the fd_set (for the select() call)
+ when compiling the library with HAVE_PTHREADS and an application
+ which includes "rfb.h" without, the structures got mixed up.
+ So, the pthreads section is now always at the end, and also
+ you get a linker error for rfbInitServer when using two different
+ pthread setups.
+ fixed two deadlocks: when setting a cursor and when using CopyRect
+ fixed CopyRect when copying modified regions (they lost the modified
+ property)
+ WIN32 target compiles and works for example :-)
+ fixed CopyRect (was using the wrong order of rectangles...)
+ should also work with pthreads, because copyrects are
+ always sent immediately (so that two consecutive copy rects
+ cannot conflict).
+ changed rfbUndrawCursor(rfbClientPtr) to (rfbScreenInfoPtr), because
+ this makes more sense!
+ flag backgroundLoop in rfbScreenInfo (if having pthreads)
+ CopyRect & CopyRegion were implemented.
+ if you use a rfbDoCopyR* function, it copies the data in the
+ framebuffer. If you prefer to do that yourself, use rfbScheduleCopyR*
+ instead; this doesn't modify the frameBuffer.
+ added flag to optionally not send XCursor updates, but only RichCursor,
+ or if that is not possible, fall back to server side cursor.
+ This is useful if your cursor has many nice colours.
+ fixed java viewer on server side:
+ SendCursorUpdate would send data even before the client pixel format
+ was set, but the java applet doesn't like the server's format.
+ fixed two pthread issues:
+ rfbSendFramebuffer was sent by a ProcessClientMessage function
+ (unprotected by updateMutex).
+ cursor coordinates were set without protection by cursorMutex
+ source is now equivalent to TridiaVNC 1.2.1
+ pthreads now work (use iterators!)
+ cursors are supported (rfbSetCursor automatically undraws cursor)
+ support for 3 bytes/pixel (slow!)
+ server side colourmap support
+ fixed rfbCloseClient not to close the connection (pthreads!)
+ this is done lazily (and with proper signalling).
+ cleaned up mac.c (from original OSXvnc); now compiles (untested!)
+ compiles cleanly on Linux, IRIX, BSD, Apple (Darwin)
+ fixed prototypes
+0.1
+ rewrote API to use pseudo-methods instead of required functions.
+ lots of clean up.
+ Example can show symbols now.
+ All encodings
+ HTTP