| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Makes it easier to debug TLS issues, and to see the effect of
altering the priority string.
|
|
|
|
|
|
| |
In theory we could return to communicate without TLS after a
shutdown. It also makes sure the connection object isn't left
completely without streams.
|
|
|
|
|
|
| |
The streams depend on the session and can crash the program if they
are removed in the wrong order. Do a general cleanup of the life time
management of the streams.
|
|
|
|
|
| |
There is already an implicit connection between them, so let's make
it explicit. This allows easy lookup outside of the processMsg() function.
|
|
|
|
|
| |
If we leave it at something random we'll get an invalid delete
if the handshake fails.
|
|
|
|
|
| |
These are just confusing and obfuscating. Do a normal delete of
these objects instead.
|
|
|
|
|
|
|
| |
If we are still in slow start then we haven't discovered the actual
bandwidth limit yet. We also rely on the caller causing a bit of
congestion to detect the limit. So report a higher bandwidth estimate
than what we've currently tested in this scenario.
|
|
|
|
|
|
|
|
|
|
|
| |
Loosen the definition of "lossless" a bit so that we can use high
quality JPEG to refresh damaged parts of the screen. Although this
isn't bit perfect, it is close enough that most users will not be
able to tell the difference.
Level 9 is used rather than level 8 because some monitors have
exaggerated contrast that allows the artefacts from level 8 to be
noticeable.
|
| |
|
|
|
|
|
| |
Most encoders don't have a palette mode, so don't force them to
specify a dummy value to the Encoder base class constructor.
|
|
|
|
|
|
| |
If we have plenty of bandwidth then CPU might be the limiting resource.
Unfortunately we don't have a good number for that limit, so add a
conservative hard coded value.
|
|
|
|
|
| |
If we're out of time then we will definitely overshoot, so don't even
try.
|
|
|
|
|
| |
The update size is in bytes, but we are counting pixels. So make
sure we convert things properly before comparing.
|
|
|
|
|
|
|
|
| |
If an area recently changed then we can guess that it will most likely
change again very soon. In such a case it is meaningless to send a
lossless refresh as it will directly be overwritten. Keep track of
such areas and avoid refreshing them until we no longer see any
changes to them.
|
|
|
|
|
| |
The reference for "dueTime" wasn't properly updated when this code
was refactored from a static method to a normal object method.
|
|
|
|
|
| |
The compiler isn't smart enough to figure all of these out, so
restructure things a bit to avoid warnings.
|
|
|
|
|
| |
Makes it possible to use certificates from all popular CAs with
TigerVNC.
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Patch originally by Dag-Erling Smørgrav for University of Oslo.
|
| |
| |
| |
| |
| | |
Makes the code more general and not directly tied to specifically
TCP sockets.
|
| | |
|
| |
| |
| |
| |
| | |
We use polymorphic exception objects, so catching by value invokes
the copy constructor and stuff that we don't really want.
|
| | |
|
| |
| |
| |
| | |
Fixes #652.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The system to avoid processing changes for a stopped desktop was a
bit overly aggressive and resulted in those changes getting stuck even
when the desktop started again (yet another change was needed to get
things rolling again).
Make sure we flush out anything pending once the desktop is back up and
running. We don't use the frame timer here as we no longer know how
old these changes are, so we're not really rate limiting any application.
|
|/
|
|
|
|
| |
Avoids that a viewer connected to Xvnc sometimes disconnects with
"Desktop configured a different screen layout than requested" when
screens are changing.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
There might be parts of the screen that haven't changed and can
therefore be refreshed. Figure which parts these are and send just
those.
|
| |
| |
| |
| |
| |
| | |
We don't want to waste bandwidth on the lossless refresh if we might
need that bandwidth for a normal update. Try to estimate how much
data we can safely send without interfering.
|
| |
| |
| |
| |
| |
| | |
Resend pixel perfect copies of areas that were previously sent
using a lossy encoder. This is done when there is no normal update
to send, and no congestion.
|
| |
| |
| |
| |
| |
| |
| |
| | |
No need to run all the update machinery when there is no client
connected.
This commit also cleans up the stop handling a bit by moving it to
its own method.
|
| |
| |
| |
| | |
We already have an assignment operator, so no need for this method.
|
| |
| |
| |
| |
| |
| |
| | |
We cannot send updates for a cursor that is outside the requested
region, so make sure we track things properly. This also has the nice
side effect of just re-sending the bits needed when the cursor overlaps
a changed part of the framebuffer.
|
| | |
|
| |
| |
| |
| |
| |
| | |
The handler is for incoming data and we should not be abusing that
class for the writer class. Do proper write prototypes for the
relevant functions.
|
|/
|
|
|
| |
The previous code would incorrectly also add support for QEMU
key events if LED state was supported.
|
|
|
|
|
| |
Originally calling VNCServertST::setPixelBuffer(PixelBuffer* pb_) with pb_=0 would do nothing.
With this change pb will be set to 0 and deferred update timer will be stopped.
|
|
|
|
|
|
| |
Simple shifting can give noticable rounding errors if there is a large
difference in the number of bits between the formats. Do the proper
thing via a lookup table, the same way things are done for up conversion.
|
|\ |
|
| |
| |
| |
| |
| | |
Allows us to compare our computed congestion window with the
underlying one used by the TCP layer.
|
| | |
|
| |
| |
| |
| |
| |
| | |
Refine the previous method by interpolating the values we need.
This reduces the effect of the problem that we cannot send enough
ping packets.
|
| |
| |
| |
| |
| | |
It's a general function and it's better to have that particular
complexity in its own place.
|
| | |
|
| |
| |
| |
| |
| | |
This reduces the data sent, and avoids any problems with the
client corrupting it.
|