Pierre Ossman [Thu, 17 Jun 2021 13:39:30 +0000 (15:39 +0200)]
Correctly handle screen layout with offset
We miscalculated the screen layout if the geometry had an offset as we
adjusted the real screen layout to account for the offset, but compared
it to the unadjusted geometry.
Pierre Ossman [Thu, 10 Jun 2021 14:32:29 +0000 (16:32 +0200)]
Remove early data check for TLSInStream
Having this early check means that we somewhat randomly get different
exception behaviours on errors in deeper layers as some exceptions are
allowed to propagate unhindered and some are not (since they are thrown
in the pull function).
Pierre Ossman [Mon, 7 Jun 2021 15:09:15 +0000 (17:09 +0200)]
Convert CI to GitHub Actions
Travis has unfortunately been severely rate limited by Docker Hub so we
have to switch to GitHub, which has an agreement with Docker to avoid
the rate limiting.
Jan Grulich [Tue, 25 May 2021 12:18:48 +0000 (14:18 +0200)]
CharArray: pre-fill empty array with zeroes
CharArray should always be null-terminated. There is a potential
scenario where this all might lead to crash. In Password we call
memset(), passing length of the array we get with strlen(), but
this won't return correct value when the array is not properly
null-terminated.
made full-screen edge scrolling smoother and faster
The old method used a very slow frame rate with small steps,
which made it obnoxious during use. The new method has a few
improvements:
- Calculates "edge" region width automatically, as a ratio of
the viewport size. Default is 1/16th.
- Uses a different edge width for x and y, which works better
on very wide or very tall screens.
- Increased default frame rate from 10 fps to 60 fps.
- Replaced hardcoded frame rate with a #define.
- Reduced maximum movement per frame slightly, because the
frame rate is so much faster. The overall result is still much
faster, but also easier to do small adjustments with.
- Fixed off-by-one error in scroll rate calculation formula. Left/up
scrolls were faster than down/right, but this is fixed.
This makes it more comfortable to use TigerVNC on a small screen
to work on a larger screen for hours at a time.
Pierre Ossman [Thu, 1 Nov 2018 09:19:15 +0000 (10:19 +0100)]
Maintain static screen DPI on resize
Trying to dynamically track the DPI did not really work as we'd
start accumulating errors and eventually the DPI would start to
drift. Instead maintain a fixed, sensible DPI at all times.
lhchavez [Mon, 8 Feb 2021 15:09:10 +0000 (07:09 -0800)]
Support the VMware Cursor Position extension on vncviewer
This change makes it possible for re-synchronizing the remote cursor on
the vncviewer when in fullscreen mode. This is done by locally moving
the cursor position to what the server thinks it should be.
lhchavez [Mon, 8 Feb 2021 00:36:47 +0000 (16:36 -0800)]
Add support for notifying clients about pointer movements
This change adds support for the VMware Mouse Position
pseudo-encoding[1], which is used to notify VNC clients when X11 clients
call `XWarpPointer()`[2]. This function is called by SDL (and other
similar libraries) when they detect that the server does not support
native relative motion, like some RFB clients.
With this, RFB clients can choose to adjust the local cursor position
under certain circumstances to match what the server has set. For
instance, if pointer lock has been enabled on the client's machine and
the cursor is not being drawn locally, the local position of the cursor
is irrelevant, so the RFB client can use what the server sends as the
canonical absolute position of the cursor. This ultimately enables the
possibility of games (especially FPS games) to behave how users expect
(if the clients implement the corresponding change).
Pierre Ossman [Thu, 14 Jan 2021 12:07:56 +0000 (13:07 +0100)]
Fix handling of bad update requests
We computed a safe area if a client gave us a bogus one, but we didn't
actually use it. Fix this properly and make sure we don't pass on bad
coordinates further.
Pierre Ossman [Mon, 4 Jan 2021 12:04:26 +0000 (13:04 +0100)]
Handle unsolicited clipboard transfers
The extended clipboard protocol has the ability for the peer to request
things to be sent automatically, without a request message. Make sure we
honor such settings.
Pierre Ossman [Wed, 9 Dec 2020 14:57:05 +0000 (15:57 +0100)]
Map macOS Eisu key to XK_Eisu_toggle
It's a better match for what the key symbolises, even though it is not
as common on Unix systems. But we want to avoid getting in to tailoring
things for any one specific input method implementation.
Pierre Ossman [Fri, 20 Nov 2020 08:19:07 +0000 (09:19 +0100)]
Only handle Japanese keys when Japanese layout
Some of the virtual key codes for Japanese keys are used for other
things on other layouts, so we need to make sure we only use this look
up table when the layout is indeed set to Japanese.