DRC [Mon, 13 Feb 2012 03:55:10 +0000 (03:55 +0000)]
Fix regression caused by r4841. That patch assumed that JPEG encoding always uses the raw buffer, which is not true. If pixel translation is necessary, then JPEG images will sometimes be encoded from the translated (intermediate) buffer instead.
Brian Hinz [Fri, 3 Feb 2012 05:38:23 +0000 (05:38 +0000)]
Replace all stream-based IO with non-blocking NIO-based implementation. Still a fair amount of cleanup to do, particularly in the SSL handler, which is not very robust, and exception handling in general. All core functionality appears to be working fine though.
Pierre Ossman [Mon, 30 Jan 2012 13:58:44 +0000 (13:58 +0000)]
The Tight encoder uses the pixel buffer as a scratch pad, which doesn't
work so well with the new optimisation to feed it the raw frame buffer.
Reorganise and clean up the code to handle this, and make the raw frame
buffer pointer const so that we might avoid such bugs in the future.
Pierre Ossman [Mon, 23 Jan 2012 15:54:11 +0000 (15:54 +0000)]
Fix a race condition where we might get updates thrown at us right after a
framebuffer switch, but before we've been given the pointer to the new
framebuffer.
Pierre Ossman [Mon, 23 Jan 2012 15:43:42 +0000 (15:43 +0000)]
Failure to find FLTK dependencies is only fatal for our version of FLTK.
When using the system version we have to assume it's built the way the
user wants.
DRC [Tue, 17 Jan 2012 22:33:45 +0000 (22:33 +0000)]
Our FLTK patches modified FLTK's autotools-based build system so that HAVE_XFIXES and HAVE_XCURSOR were defined in FLTK's config.h, but those changes never made it into the CMake-based build system used by the in-tree version of FLTK. Further, our build system was allowing silent failures whenever Xft, Xinerama, Xcursor, or Xfixes were not present on the build system. Now, the lack of these libraries is treated as a fatal error, since these libraries are critical for TigerVNC functionality.
DRC [Thu, 22 Dec 2011 15:57:59 +0000 (15:57 +0000)]
Changing the deferred update timer to 10 ms caused a large performance regression on video/3D apps, and until we can quantify the benefits of a larger DUT value, it was decided that it should be changed back to 1 ms for the 1.2 release.
Pierre Ossman [Wed, 21 Dec 2011 13:17:54 +0000 (13:17 +0000)]
We need to explicitly trigger a framebuffer update for server side rendered
cursors. Previously this happened to work anyway because we had a lot of
triggers for updates. After the cleanup, we need to be more explicit.
Brian Hinz [Sun, 4 Dec 2011 22:06:21 +0000 (22:06 +0000)]
Grabbing the RGB components from the BufferedImage one at a time and converting the to a 24bpp RGB color manually is about 25% faster than using BufferedImage.getRGB().
Brian Hinz [Sun, 27 Nov 2011 20:43:47 +0000 (20:43 +0000)]
Sync up java Tight decoder with recent changes to C client as much as possible. These changes should also fix the 16bpp issue reported in bug #3429667. I think there are probably errors in the FilterGradient* code but I can't get any servers to actually send this type of data to test it.
Peter Åstrand [Thu, 24 Nov 2011 12:34:15 +0000 (12:34 +0000)]
Consistent and simple comment header: No need to specify email, since
its included in the meta info below. TigerVNC Team copyright should be
sufficient.
Pierre Ossman [Sun, 20 Nov 2011 15:39:17 +0000 (15:39 +0000)]
Increase the default compression level to cater to a broader range of users
(bandwidth is often the limiting factor, rather than CPU). Further increases
give little returns, so 2 is currently deemed the best tradeoff.
Pierre Ossman [Sun, 20 Nov 2011 15:37:31 +0000 (15:37 +0000)]
The block size for the comparing update tracker was inefficently low. Raising
it from 16 to 64 pixels significantly reduces the CPU overhead in many cases,
without sacrificing much in what it detects.
Pierre Ossman [Sun, 20 Nov 2011 15:36:11 +0000 (15:36 +0000)]
Make the comparing update tracker a bit more flexible. It can now be in an
"auto" state where it will be enabled until we deem that the client is better
of without it (currently triggered by explicitly stating a low compression
level).
Pierre Ossman [Thu, 17 Nov 2011 10:19:19 +0000 (10:19 +0000)]
Also grab the mouse pointer in full screen as some window managers like to
do special things with buttons combined with modifiers. The user probably
wants to propagate these to the server though.
Pierre Ossman [Thu, 10 Nov 2011 13:30:39 +0000 (13:30 +0000)]
Send a move event when the pointer leaves the viewport as it makes it much
easier to hit the edge of the screen (which is a popular UI element these
days).
Pierre Ossman [Thu, 10 Nov 2011 12:37:39 +0000 (12:37 +0000)]
The CopyRect encoding is very efficient so it is wasteful to check those
areas here. It also makes the CUT counter-productive in some cases as it
tends to expand small changes to BLOCK_SIZE (16 pixels) because of the copy
regions.
Pierre Ossman [Tue, 8 Nov 2011 12:12:02 +0000 (12:12 +0000)]
Cork the outgoing TCP stream while we still have messages to process. This
allows more efficent use of the congestion window as we will send fewer packets.
DRC [Tue, 8 Nov 2011 08:38:58 +0000 (08:38 +0000)]
Some platforms (I'm looking at you, MinGW64) have gettext but not iconv, so the build fails because iconv.h is missing. Thus, disable NLS if either gettext or iconv is not found.
DRC [Mon, 7 Nov 2011 21:18:56 +0000 (21:18 +0000)]
Fix legacy-friendly build (I hope). r4745 (enabling DPMS) removed -DNO_HW_ONLY_EXTS from Xvnc_CPPFLAGS in unix/xserver/hw/vnc/Makefile.am, which caused xorg-xserver 1.6.5 to attempt to build the XFree86-DRI extension, but the stub for
XFree86DRIExtensionInit() was missing, so Xvnc failed to link. Adding --disable-dri (r4765) caused the GLX build to fail, because GLX needs either DRI or DRI2, and DRI2 was not being properly detected because the dri2proto module we were using was too old for our X server version.
Pierre Ossman [Mon, 7 Nov 2011 21:13:54 +0000 (21:13 +0000)]
Clean up the interface for VNCSConnectionST. Entry points are more apparent
and the data flow is now more strictly aimed towards this connection class.
DRC [Thu, 3 Nov 2011 18:49:21 +0000 (18:49 +0000)]
If the client and server are using identical pixel formats, then perform Tight decoding directly into the viewer's back buffer, rather than going through the slow fillRect/imageRect routines.
Pierre Ossman [Thu, 3 Nov 2011 12:50:52 +0000 (12:50 +0000)]
We informed the RFB layer of RENDER operations before they were actually
carried out. Under some circumstances, this could result in an update going
out with the old framebuffer contents.
Pierre Ossman [Tue, 25 Oct 2011 15:13:13 +0000 (15:13 +0000)]
Make socket writes non-blockable. This allows the system to more quickly
return back to the Xorg main loop, meaning that things will be more responsive
in the presence of slow VNC clients.
Pierre Ossman [Tue, 18 Oct 2011 14:27:07 +0000 (14:27 +0000)]
Another attempt at solving the compression level change problems. We were still
not detecting the correct approach properly, and hence still getting crashes.