Pierre Ossman [Thu, 12 Nov 2015 11:21:58 +0000 (12:21 +0100)]
Make the decoder multi-threaded
This implements the basic infrastructure for multi-threaded
decoding of rects. However there is just one thread reading data
and one thread decoding it. More logic is needed to safely decode
multiple rects at the same time.
Pierre Ossman [Wed, 11 Nov 2015 12:11:09 +0000 (13:11 +0100)]
Clear up ZlibInStream::reset() behaviour
It previously only did a reset of the ZlibInStream object, not the
underlying zlib stream. It also had the side effect of flushing
the underlying stream and disassociating from it.
Clear things up by changing the naming, and introducing a proper
reset function (which is needed by the Tight decoder).
Pierre Ossman [Tue, 10 Nov 2015 16:17:34 +0000 (17:17 +0100)]
Split decoders into a read and decode step
We need to split these steps up in preparation for multi-core
support. Reading needs to be done in a serial manner, whilst
decoding can be done in parallel.
This also involved a rather large cleanup of the Tight decoder.
Pierre Ossman [Mon, 9 Nov 2015 15:34:54 +0000 (16:34 +0100)]
Delegate decoder object management to a separate class
Done in preparation for multi-core decoding. Keeps the complexity
out of the other classes. This also moves ownership of the
framebuffer in to CConnection. It's the CConnection object that is
aware of the threads and how to synchronise with them. Therefore
the ownership of the framebuffer must also be there to make sure
it isn't deleted whilst threads are working.
DRC [Fri, 16 Oct 2015 08:28:58 +0000 (03:28 -0500)]
Ensure that libjpeg-turbo headers are included
On some systems, the build was picking up jpeglib.h from the system
include directories, and if the system's version of libjpeg[-turbo] used
a different API/ABI version than the one specified in JPEG_LIBRARY, this
led to a "Wrong JPEG library version" error at run time.
Pierre Ossman [Tue, 29 Sep 2015 13:40:49 +0000 (15:40 +0200)]
Return TcpListener pointers rather than objects
It is easier to control object life time and avoid magical socket
duplication by having a single TcpListener object to pass around.
We have to be more careful about deleting the object though.
Pierre Ossman [Tue, 29 Sep 2015 07:40:20 +0000 (09:40 +0200)]
Add address sanitizer switch
Useful for debugging memory leaks and access violations. It is
not available on Windows though, and there is some problem compiling
ObjectiveC++ with it turned on.
Pierre Ossman [Thu, 24 Sep 2015 14:24:48 +0000 (16:24 +0200)]
Make sure fallback block handler remains enabled
Commit f8e3b34 introduced a regression where the fallback write block
handler would cease working after the first time it was called,
potentially stalling writes.
Pierre Ossman [Wed, 23 Sep 2015 10:18:52 +0000 (12:18 +0200)]
Display partial updates on slow transfers
Normally we only display screen changes once we have the updates for
the entire screen. This may give the impression that the viewer is
hung though. So display the partial data if the update is taking to
long to arrive.
Brian P. Hinz [Sun, 20 Sep 2015 00:47:56 +0000 (20:47 -0400)]
Fixes for X509 CA certificate handling
95f39a5 introduced a regression whereby an exception would be thrown
when a PEM encoded CA certificate file containing one or more blank
lines was read in under Apple Java 6. Additionally, CA certs were
being appended to the ~/.vnc/x509_savedcerts.pem file even if they
were already included in it. Also fixes a possible FileNotFoundException
if the x509_savedcerts.pem file didn't exist.
Pierre Ossman [Mon, 14 Sep 2015 12:35:05 +0000 (14:35 +0200)]
Refuse to start Xvnc if we failed to initialise a screen
Starting Xvnc without having any VNC functionality is pretty much
pointless. So terminate when that happens, making the situation easier
to detect for startup scripts.
Brian P. Hinz [Sun, 13 Sep 2015 14:39:54 +0000 (10:39 -0400)]
Improve handling of x509 authentication
Fixes #193 and also adds automatic certificate saving feature like
the Fltk viewer. Also pulls in CA certificates from all trusted
authorities known to the JRE for the case when the server is using
a certificate from a top-level authority.
Brian P. Hinz [Sat, 12 Sep 2015 20:11:36 +0000 (16:11 -0400)]
Compile legacy Xvnc with relative rpath for portability
Build with rpath link so that Xvnc finds our libGL even if
it's not installed in "/". Also applied dridir and xkbcompdir
patches so that the correct DRI driver gets loaded.
Brian P. Hinz [Thu, 20 Aug 2015 05:20:10 +0000 (01:20 -0400)]
Add multiple monitor spanning feature to java viewer
Adds support for spanning multiple monitors in "Extended" mode
to the Java viewer. Allows for spanning when maximizing in
addition to just full-screen mode. Seems a bit unpredictable on
MS Windows 7 (ie: depends on window placement, which screen is
set as primary, etc.), but this appears to be the behavior of
the OS itself.
Brian P. Hinz [Thu, 20 Aug 2015 04:26:28 +0000 (00:26 -0400)]
Fix desktopSize parameter issue
desktopSize preference was being applied even if the checkbox was
unselected in the dialog is a value had previously been stored in
the preferences file.
Added patches for the following upstream CVEs: 2013-7439,
2015-0255, 2015-1802, 2015-1803, 2015-1804. Also updated the
versions of gnutls, libtasn1, and libjpeg-turbo used to build
static libraries to their latest respective upstream versions.
Added patches for the following upstream CVEs: 2013-7439,
2015-0255, 2015-1802, 2015-1803, 2015-1804. Also updated the
versions of gnutls, libtasn1, and libjpeg-turbo used to build
static libraries to their latest respective upstream versions.
Pierre Ossman [Thu, 30 Jul 2015 13:06:37 +0000 (15:06 +0200)]
Set user/client requested mode as preferred
Desktop environments like to change to the monitor's preferred
mode, especially at login. Lacking one, they pick the highest
resolution they can find. This tends to override what the user
has picked, so try to work around the desktop environments by
setting the preferred mode to what the user has chosen.
Credit goes to Michal Srb who figured out the problem.