| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| | |
|
|/
|
|
|
| |
We need to examine the incoming PixelBuffer, not the previous one
(which might not even be valid).
|
|
|
|
|
| |
Change the internal clipboard API to use a request based model in
order to be prepared for more advanced clipboard transfers.
|
|
|
|
|
|
| |
We now filter incoming data, which means we can start assuming the
clipboard data is always null terminated. This allows us to clean
up a lot of the internal handling.
|
|
|
|
|
|
| |
This is required by the protocol so we should make sure it is
enforced. We are tolerant of clients that violate this though and
convert incoming clipboard data.
|
|\ |
|
| |
| |
| |
| |
| | |
Add more checks and fix some callers to make sure that the server
core always has a valid screen layout configured.
|
| |
| |
| |
| |
| |
| | |
It doesn't belong on each socket server object as timers are global.
Force implementations to call the Timer system directly instead,
avoiding any middle men.
|
| |
| |
| |
| |
| | |
Get this timeout in to the timer system as well to make things
simpler and more robust.
|
| |
| |
| |
| |
| |
| | |
Do a proper cleanup when one of the termination timeouts trigger
rather than just exiting on the spot. This makes sure we don't leave
stray stuff around, e.g. unix socket files.
|
| |
| |
| |
| |
| |
| | |
This makes them more consistent with everything else, which makes
things clearer and also allows them to handle some corner cases
(e.g. only firing once).
|
| |
| |
| |
| | |
It is static and only used from a single place, so let's inline it.
|
| |
| |
| |
| |
| | |
It is functionality specific to WinVNC, so move the code there
to make things more clear.
|
| |
| |
| |
| |
| |
| | |
Removed the last parts of VNCSConnectionST's back door in to
VNCServerST and let the parent class fully handle coordination of
clients, and access to the desktop.
|
| |
| |
| |
| |
| | |
This makes it generally useful and other code doesn't have to
know of the specific sub-class.
|
| |
| |
| |
| |
| | |
More encapsulation of functions that require coordinate between
clients.
|
| |
| |
| |
| |
| |
| | |
There is some client coordination needed which is better encapsulated
inside VNCServerST. This also helps hiding the desktop from the
individual clients.
|
|/
|
|
|
| |
Make things simpler by making this a part of the SDesktop interface
that always needs to be implemented.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
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.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
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 buffer is considered changed right away, so we might not get any
add_changed() calls to trigger a start of the timer.
|
| | |
|
|/
|
|
| |
Based on QEMU's behaviour.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| | |
This redesigns the old "deferred updates" mechanism in to a frame
clock that governs how often updates are sent out. The goal is still
the same, to aggregate updates and avoid pointless updates, all in
the name of efficiency. This model should however be more robust
against delays that sometimes causes us to miss the desired rate.
|
| | |
|
|/
|
|
|
| |
This will allow us to use better formats that preserve the entire
alpha channel.
|
| |
|
|
|
|
|
|
| |
What to do when a socket is writeable should be handled in the
RFB core code as there may be other events we want to fire off
when this happens.
|
|
|
|
|
| |
Either by casting, or switching to a more appropriate type
for the variable.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
framebuffer switch, but before we've been given the pointer to the new
framebuffer.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4839 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
|
|
| |
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.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4825 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
|
|
|
|
|
| |
"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).
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4809 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
|
|
|
| |
well-behaved manner.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4784 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
|
|
|
| |
and the data flow is now more strictly aimed towards this connection class.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4771 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
| |
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4736 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
| |
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4039 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
|
|
|
| |
change.
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3890 3789f03b-4d11-0410-bbf8-ca57d06f2519
|
|
|
|
| |
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3889 3789f03b-4d11-0410-bbf8-ca57d06f2519
|