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 [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.
Pierre Ossman [Tue, 7 Jan 2014 15:28:45 +0000 (15:28 +0000)]
Make sure the fill function pointer gets updated if the
managed pixel buffer changes format. Also add a bit more
protection for switching pixel format as the base classes
aren't really designed for that. Fixes a crash with the
mouse pointer in WinVNC.
Based on work done by Daniel Wyatt (dewyatt).
Brian Hinz [Thu, 2 Jan 2014 20:35:52 +0000 (20:35 +0000)]
Release all downKeys when the focus is lost, otherwise the state of the keyboard will be inconsistent when the focus is regained. Also, the direction of the key release was incorrect in r5147.
Brian Hinz [Thu, 2 Jan 2014 01:23:56 +0000 (01:23 +0000)]
Re-introduces embedded applet mode for the java viewer. On Windows and Linux, the embedded applet can be dragged from the browser window and detached from the browser process. The mouse gesture for detaching the applet is ALT+drag on Windows and SHIFT+drag on Linux.
Brian Hinz [Sun, 29 Dec 2013 16:30:32 +0000 (16:30 +0000)]
Another overhaul of the key event handlers. There was a fundamental flaw in the previous implementation due to the fact that java key modifiers associated with a key_pressed or key_released event are reported with respect to each particular event. Thus, for example a key sequence of CTRL press, letter press, CTRL release, letter release never sends the corresponding release for the CTRL+letter down event. Key events are now synchronized on a monitor object to help ensure that the key sequence is preserved. This implementation mirrors the fltk viewer quite closely and, as far as I can tell, is capable of sending all of the same keysyms.
Brian Hinz [Mon, 2 Dec 2013 02:53:10 +0000 (02:53 +0000)]
Added attributes to the Java viewer MANIFEST file in order to conform to upcoming JRE requirements. Added support for specifying a signing certificate in place of the self-signed certificate.