aboutsummaryrefslogtreecommitdiffstats
path: root/common/rfb/VNCServerST.cxx
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'fix-mistake' of https://github.com/gschwind/tigervncPierre Ossman2019-10-141-2/+2
|\
| * fix to early remove of iterator in VNCServerST::removeSocketBenoit Gschwind2019-08-241-2/+2
| |
* | Fix bad PixelBuffer reference in VNCServerST::setPixelBuffer()Pierre Ossman2019-10-041-1/+1
|/ | | | | We need to examine the incoming PixelBuffer, not the previous one (which might not even be valid).
* Improved clipboard APIPierre Ossman2019-07-011-11/+65
| | | | | Change the internal clipboard API to use a request based model in order to be prepared for more advanced clipboard transfers.
* Clean up internal clipboard handlingPierre Ossman2019-07-011-5/+5
| | | | | | 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.
* Make sure clipboard uses \n line endingsPierre Ossman2019-07-011-0/+2
| | | | | | 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.
* Merge branch 'connparams' of https://github.com/CendioOssman/tigervncPierre Ossman2018-12-101-6/+9
|\
| * Make sure we always have a valid screen layoutPierre Ossman2018-12-101-6/+9
| | | | | | | | | | Add more checks and fix some callers to make sure that the server core always has a valid screen layout configured.
* | Get rid of SocketServer::checkTimeouts()Pierre Ossman2018-11-091-10/+0
| | | | | | | | | | | | 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.
* | Change idle timeout to timerPierre Ossman2018-11-091-6/+0
| | | | | | | | | | Get this timeout in to the timer system as well to make things simpler and more robust.
* | Properly terminate server on timeoutsPierre Ossman2018-11-091-3/+3
| | | | | | | | | | | | 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.
* | Change exit timeouts to timersPierre Ossman2018-11-091-76/+29
| | | | | | | | | | | | 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).
* | Remove writeConnFailedFromScratch()Pierre Ossman2018-11-091-2/+7
| | | | | | | | It is static and only used from a single place, so let's inline it.
* | Move ListConnInfo to WinVNC directoryPierre Ossman2018-11-091-36/+1
| | | | | | | | | | It is functionality specific to WinVNC, so move the code there to make things more clear.
* | Encapsulate client handling in VNCServerSTPierre Ossman2018-10-261-5/+73
| | | | | | | | | | | | 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.
* | Move access rights and closing to SConnection objectPierre Ossman2018-10-101-1/+1
| | | | | | | | | | This makes it generally useful and other code doesn't have to know of the specific sub-class.
* | Encapsulate setDesktopSize() in VNCServerSTPierre Ossman2018-10-101-11/+33
| | | | | | | | | | More encapsulation of functions that require coordinate between clients.
* | Encapsulate event handling in VNCServerSTPierre Ossman2018-10-101-0/+46
| | | | | | | | | | | | There is some client coordination needed which is better encapsulated inside VNCServerST. This also helps hiding the desktop from the individual clients.
* | Remove QueryConnectionHandlerPierre Ossman2018-10-101-1/+7
|/ | | | | Make things simpler by making this a part of the SDesktop interface that always needs to be implemented.
* Flush pending changes when desktop startsPierre Ossman2018-05-071-2/+8
| | | | | | | | | | | 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.
* Send lossless refresh even with pending updatesPierre Ossman2018-03-281-5/+9
| | | | | | 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.
* Limit lossless refresh update to safe sizePierre Ossman2018-03-281-0/+11
| | | | | | 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.
* Avoid checking updates when desktop is stoppedPierre Ossman2018-03-281-11/+17
| | | | | | | | 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.
* VNCServerST: Allow unsetting pixel buffer.Michal Srb2018-03-071-10/+6
| | | | | 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.
* Merge branch 'congestion' of https://github.com/CendioOssman/tigervncPierre Ossman2018-02-261-3/+4
|\
| * Reduce header dependencies in server classesPierre Ossman2017-11-171-3/+4
| |
* | Avoid corner case of applications rendering at frame ratePierre Ossman2017-11-061-1/+11
| | | | | | | | | | | | | | 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.
* | Make sure to start the frame timer after a buffer changePierre Ossman2017-09-221-0/+1
| | | | | | | | | | The buffer is considered changed right away, so we might not get any add_changed() calls to trigger a start of the timer.
* | Send lock LED state from server to clientPierre Ossman2017-08-241-0/+10
| |
* | Add server side lock key sync heuristicPierre Ossman2017-08-241-1/+7
|/ | | | Based on QEMU's behaviour.
* Merge branch 'fps' of https://github.com/CendioOssman/tigervncPierre Ossman2017-02-241-84/+66
|\
| * Send updates with a fixed intervalPierre Ossman2017-02-241-74/+55
| | | | | | | | | | | | | | | | 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.
| * Only update rendered cursor when requestedPierre Ossman2017-02-241-12/+13
| |
* | Change cursor API to use RGBA dataPierre Ossman2017-02-221-12/+12
|/ | | | | This will allow us to use better formats that preserve the entire alpha channel.
* Log statistics from ComparingUpdateTrackerPierre Ossman2016-11-081-0/+9
|
* Move socket write event handling in to the RFB corePierre Ossman2016-04-291-1/+14
| | | | | | 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.
* Fix bad signed/unsigned comparisonsPierre Ossman2015-03-031-1/+1
| | | | | Either by casting, or switching to a more appropriate type for the variable.
* Use PixelBuffer objects as the interface for encoders and decodersPierre Ossman2014-07-141-1/+0
| | | | | | | 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 helper class for a rendered cursorPierre Ossman2014-07-141-16/+3
| | | | | | 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.
* Get rid of the direct access abuse of FullFramePixelBuffer's dataPierre Ossman2014-07-071-5/+12
|
* Remove full support for colour mapsPierre Ossman2014-07-071-9/+0
| | | | | | | | | 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.
* Fix a race condition where we might get updates thrown at us right after aPierre Ossman2012-01-231-1/+26
| | | | | | | | 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
* Changing the deferred update timer to 10 ms caused a large performance ↵DRC2011-12-221-1/+1
| | | | | | 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
* Make the comparing update tracker a bit more flexible. It can now be in anPierre Ossman2011-11-201-3/+22
| | | | | | | | | "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
* Reimplement the deferred update handling, this time in a more robust andPierre Ossman2011-11-081-17/+76
| | | | | | | well-behaved manner. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4784 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Clean up the interface for VNCSConnectionST. Entry points are more apparentPierre Ossman2011-11-071-15/+5
| | | | | | | 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
* Make sure RFB timers are actually respected by the server implementations.Pierre Ossman2011-10-251-0/+3
| | | | git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4736 3789f03b-4d11-0410-bbf8-ca57d06f2519
* [Development] Replace SSecurityFactoryStandard class by simplier Security class.Adam Tkac2010-04-231-5/+2
| | | | git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4039 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Revert previous commit (r3889). Windows code has to be cleaned before thisAdam Tkac2009-09-041-2/+2
| | | | | | | change. git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3890 3789f03b-4d11-0410-bbf8-ca57d06f2519
* Replace rfb::strDup by safe_strdup and remove rfb::strFree in favor of free()Adam Tkac2009-09-041-2/+2
| | | | git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@3889 3789f03b-4d11-0410-bbf8-ca57d06f2519