| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
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.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
We shouldn't unconditionally remove the server side cursor just
because the client supports client side cursors. We need to also
check that the client fulfills the other criteria for taking over
the cursor.
|
| |
| |
| |
| |
| |
| | |
In most cases we will send an update at the end of processing client
messages so these extra calls only slow things down. Server initiated
events still need an explicit call though.
|
| |
| |
| |
| |
| |
| |
| |
| | |
Improve the tracking of what cursor we've sent to the client to make
sure the initial cursor is sent properly. We previously tried to infer
this information based on if we've rendered a server side cursor or
not. This logic broke down if things triggered before we've sent the
first update to the client.
|
| | |
|
|\ \
| | |
| | | |
Hook up the "Load X.509 Cert/Key" dialogs in winvnc. Fixes #106
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
We already assume sockets here since we use select().
|
|\ \ \
| | | |
| | | |
| | | | |
https://github.com/x11clone/x11clone
|
| | | |
| | | |
| | | |
| | | | |
Add a Configuration::removeParam to support such cases.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This makes it possible to create a derived class from Socket which is
not TCP based, without having VNCSConnectionST.cxx trying to call
setsockopt() on a non-socket.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There is a problematic corner case where an application is updating
at exactly the same rate that we're sending update. In that case we
may miss updates regularly, getting a very uneven final frame rate.
Avoid this by introducing a slight offset when we start updating.
|
|/ / /
| | |
| | |
| | |
| | | |
The logic got inverted resulting in the cursor being sent needlessly
whenever the cursor moved.
|
| | |
| | |
| | |
| | |
| | | |
Include the type of exception in the string generated by each
subclass. Also simplify the constructs to what is needed.
|
| | |
| | |
| | |
| | |
| | |
| | | |
It was moved to the common code in f8e3b34c6, but it was unreliable
because the state could sometimes get out of sync. Push it back in
to Xvnc since it isn't necessarily something all servers will have.
|
| | |
| | |
| | |
| | |
| | | |
Don't touch the existing value or we might mess it up when we avoid
division by zero.
|
| | |
| | |
| | |
| | |
| | | |
The buffer is considered changed right away, so we might not get any
add_changed() calls to trigger a start of the timer.
|
| | |
| | |
| | |
| | | |
It was only used by WinVNC, so push it there instead.
|
| | | |
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Don't force users of these headers to squash compiler
warnings about unused arguments, annotate with __unused_attr.
|