Pierre Ossman [Wed, 9 Jul 2014 14:44:11 +0000 (16:44 +0200)]
Use PixelBuffer objects as the interface for encoders and decoders
This avoid a lot of unnecessary middle men. This also pushes the
responsibility for pixel format conversion into the encoders and
decoders. The new bufferFromBuffer() is used for direct conversion,
rather than PixelTransformer/TransImageGetter.
Pierre Ossman [Wed, 12 Feb 2014 15:33:43 +0000 (16:33 +0100)]
Add helper class for a rendered cursor
Add a magical cursor framebuffer class for handling when you
want to render the cursor on the server side. Keeps the cursor
specific magic in one contained place.
Pierre Ossman [Mon, 14 Jul 2014 11:46:48 +0000 (13:46 +0200)]
Handle closing of input devices
The core can decide to close an input device (e.g. during a
server reset). Make sure we respect this by forgetting about
the device and recreating it again later.
Pierre Ossman [Mon, 14 Jul 2014 11:20:24 +0000 (13:20 +0200)]
Re-init VNC extension on server reset
fc23895 blocked out a bit too much code when trying to make
libvnc handle server resets. Even though configuration should
only be handled once, the underlying VNC extension needs to
be reinitilised as the X core has removed all extensions on
reset.
Pierre Ossman [Thu, 30 Jan 2014 09:47:07 +0000 (10:47 +0100)]
Add optimised buffer conversion
Handles the common cases when the target or source are in
the preferred 888 format.
If one of the buffers is not 888, then it must also be properly
aligned (which is commonly the case). Performance is now in many
cases on par with PixelTransformer.
Pierre Ossman [Tue, 8 Jul 2014 13:06:25 +0000 (15:06 +0200)]
Use lookup tables for pixel upconversion
You have to loop many times when converting e.g. 2 bits to 8,
so have a couple of lookup tables to speed things up. We still
use bit replication to get from 8 bits to 16 bits though.
Pierre Ossman [Fri, 31 Jan 2014 11:37:32 +0000 (12:37 +0100)]
Encoders/decoders should track the connection object
The connection object is a much more appropriate object for the
decoders and encoders to keep track of. Besides the streams, it also
contains state like connection parameters.
Pierre Ossman [Mon, 20 Jan 2014 14:05:21 +0000 (15:05 +0100)]
Remove full support for colour maps
Gets rid of a loooot of code and complexity.
Colour map clients are still supported through an
automatically generated map, but we lose the ability to
develop a client or server that uses colour maps
internally.
Pierre Ossman [Wed, 22 Jan 2014 10:28:05 +0000 (11:28 +0100)]
Consistent use of stride vs pitch
Consistently use the term stride rather than pitch. Also
consistently represent the stride in number of pixels rather
than number of bytes. There is so much code that assumes
proper alignment already that we do not need the extra resolution.
Pierre Ossman [Mon, 17 Mar 2014 13:42:10 +0000 (14:42 +0100)]
Remove magic JPEG variables from ConnParams
Custom compression level and JPEG on/off are not inherent parts of
the protocol negotiation so they do not belong in ConnParams. Let the
UI frontend handle such things instead.
Pierre Ossman [Fri, 28 Feb 2014 10:54:34 +0000 (11:54 +0100)]
Converting to RGB might involve a precision increase
Need to do more than a simple shift to get the appropriate
new value. This isn't quite as exact as a proper multiplication
and division, but the error is so small it's not worth the
extra cycles.
Pierre Ossman [Wed, 19 Mar 2014 13:35:14 +0000 (13:35 +0000)]
This list isn't properly maintained so let's add a disclaimer.
People looking for proper attribution will have to check individual
files and repository history.
Pierre Ossman [Wed, 19 Mar 2014 12:16:48 +0000 (12:16 +0000)]
The ZRLE decoder relied on an assert() for boundary checks. A default
Release build however will remove all asserts making it possible to
overrun this buffer. This could be exploited by a malicious server.
This issue has been assigned CVE-2014-0011. Patch by Tim Waugh for
Red Hat.
Brian Hinz [Wed, 19 Feb 2014 05:19:37 +0000 (05:19 +0000)]
Fixes problems with cmake detection of GnuTLS. The current CMakeLists.txt uses check_function_exists to identify legacy versions of GnuTLS but cmake performs this test by linking a small test program. If libgnutls, libgcrypt, or libgpg-error are outside the default library search path, linking the test program fails even though gnutls and it's dependencies are installed. This patch makes it possible to specify the location of each of the three libraries independently and only as needed.
Brian Hinz [Sat, 11 Jan 2014 23:30:50 +0000 (23:30 +0000)]
r5142 and r5149 borrowed code from the TurboVNC viewer, which has different Configuration parameter logic. This caused an exception in the usage() method
Brian Hinz [Sat, 11 Jan 2014 23:07:42 +0000 (23:07 +0000)]
r5138 did not completely resolve the problem with clipboard data consuming too much heap space. Large amounts of clipboard data could still cause the heap size to grow to huge sizes. This patch tries to address the problem by opening a Reader to the underlying IO stream and then reading only up to MaxCutText characters. The garbage collector is invoked manually rather than waiting for the JVM to do it in order to prevent the heap size from growing in between JVM invoked garbage collections.