aboutsummaryrefslogtreecommitdiffstats
path: root/win
Commit message (Collapse)AuthorAgeFilesLines
* Split SystemException to handle WindowsPierre Ossman2024-10-0928-100/+100
| | | | | | | | | | | | | Windows has (at least) two error namespaces, both errno and GetLastResult(). These overlap, so it is important we keep track of which one we are dealing with. To make things extra problematic, the BSD socket API normally uses errno, but on Windows it has been mapped in to the GetLastResult() namespace. Try to keep better control of this by using separate classes for the namespaces.
* Consistently use SocketException for socket errorsPierre Ossman2024-10-091-5/+5
| | | | | | The behaviour is not consistent as Windows doesn't use errno for socket errors, but Unix systems do. Always use the same exception to keep things somewhat sane.
* Remove fake framebuffer update request callPierre Ossman2024-08-121-1/+0
| | | | | | | | | This method should only be called when the client actually sends a framebuffer update request, otherwise we might send data the client is not ready for. It's unclear what the purpose of this call is, so we have no better fix than to just remove it.
* Better type for pointer button maskPierre Ossman2024-08-124-4/+4
| | | | | This is a very limited bit field, so use an 8 bit type to clearly show how many bits are available.
* Avoid shadowing variablesPierre Ossman2024-06-248-41/+39
| | | | | It's a source of confusion and possibly bugs to reuse the same variable name for multiple things.
* Simplify code using range-based for loopsPierre Ossman2024-06-241-6/+4
| | | | | | | | | These are often more readable as they avoid a lot of the boilerplate of iterating over fixed arrays or STL containers. Note that this change is very conservative to avoid noise in "git blame". Only loops where this is a clear improvement have been converted.
* Mark overridden virtual functionsPierre Ossman2024-06-2428-79/+79
| | | | | Use the new "override" keyword to properly differentiate between new virtual methods, and existing virtual methods being overridden.
* Use nullptr in all C++ codePierre Ossman2024-06-2458-278/+285
| | | | | It's more readable than 0, and a bit safer than NULL, so let's try to follow modern norms.
* Merge branch 'present' of github.com:CendioOssman/tigervncPierre Ossman2024-06-194-12/+15
|\
| * Maintain a constant VNCServer/SDesktop connectionPierre Ossman2024-06-192-6/+9
| | | | | | | | | | | | | | | | | | The desktop isn't completely paused just because there are no clients, so it might still need some support from the server object. This is primarily an issue for headless servers, where they need to continue emulating things even without clients. A scraping server can generally go completely passive if there are no clients.
| * Stop treating "0" as "no timeouts"Pierre Ossman2024-06-192-4/+6
| | | | | | | | | | It is much more sane to treat "0" as "a timer is ready NOW", so let's change to using -1 as the invalid timeout value.
| * Remove unneeded iterationPierre Ossman2024-06-191-3/+1
| | | | | | | | This should have been done in a4308c9.
* | Remove the network::SocketServer interface.Carlos Santos2024-04-264-21/+31
| | | | | | | | | | | | | | Move these RFB specific things to rfb::VNCServer, for clarity. Signed-off-by: Pierre Ossman <ossman@cendio.se> Signed-off-by: Carlos Santos <casantos@redhat.com>
* | Move the AccessRights type and constants to the rfb namespaceCarlos Santos2024-04-231-15/+15
|/ | | | | | | | | They must belong to the rfb namespace, not to the SConnection class. Also add an AccessNone constant, since it's better to use a mnemonic symbol rather than zero to initialize the accessRights members. Signed-off-by: Carlos Santos <casantos@redhat.com>
* Update copyright year to 2024Samuel Mannehed2024-01-092-2/+2
|
* Prevent incorrect cmake usagePierre Ossman2023-12-281-0/+4
| | | | | | | | | | It's a reoccurring issue that users try to build individual components by pointing cmake at a specific subdirectory, e.g. 'cmake vncviewer'. CMake, unfortunately, has insufficient protection against this so we'll need to add a manual check. This commit only adds it to the most likely places for misuse so we don't have to pollute every CMakeLists.txt.
* Update copyright year to 2023Samuel Mannehed2023-07-202-2/+2
|
* Prefer target_include_directories()Pierre Ossman2023-03-313-6/+6
| | | | | It is more specific, and it properly sets up propagation when include directories also need to be used further down a dependency chain.
* Use operator overloading for comparisonPierre Ossman2023-02-044-5/+5
| | | | | It is much more natural than custom methods for this very common operation.
* Remove unused rfb/util.h includesPierre Ossman2023-02-046-2/+4
| | | | | | | | These files don't use anything from this header, so remove the include. This exposes some missing includes in other places, though. So add an explicit include in the files that were relying on an indirect inclusion.
* Remove "str" prefix from string helpersPierre Ossman2023-02-046-9/+9
| | | | | This matches the naming in STL, which is what we are mostly mimicing now that we are using std::string for these functions.
* Use std::string for string memory managementPierre Ossman2023-02-041-6/+5
| | | | | Avoids a bit of complexity by delegating that handling to a string object.
* Use std::string instead of CharArrayPierre Ossman2023-02-0425-144/+135
| | | | | Let's use a more common type instead of something homegrown. Should be more familiar to new developers.
* Use std::vector for temporary char arraysPierre Ossman2023-02-042-19/+19
| | | | | | | | It's more standard and familiar than our custom CharArray type, and it still gives us automatic freeing of the buffer. We could probably have used std::unique_ptr instead, but we are currently targeting older compilers where C++11 isn't standard yet.
* Free char buffer directlyPierre Ossman2023-02-044-16/+24
| | | | | It's extreme overkill to inherit from CharArray just to get the automatic freeing of the buffer when the object is destroyed.
* Make strSplit() simpler and saferPierre Ossman2023-02-045-31/+20
| | | | | | | Get rid of all the magical re-allocation and shuffling and instead just return a new set of strings that is fully splitted. Will consume a bit more memory, but is a lot safer to use as there is less confusion about ownership of memory.
* Return std::string instead of dynamic allocationsPierre Ossman2023-02-0411-81/+64
| | | | | | We mostly use classical C strings, but the memory management around them can get confusing and error prone. Let's use std::string for the cases where we need to return a newly allocated string.
* Use fixed size character bufferPierre Ossman2023-02-043-17/+16
| | | | | We know the needed space here, so let's keep it simple with a constant size string buffer.
* Return static char buffer from some methodsPierre Ossman2023-02-047-19/+18
| | | | | | | | | This mimics how some system functions (like inet_ntop()) work, and avoids complexity around ownership of the returned string buffer. The downside is that the string must be consumed directly as it will be overwritten on the next call, but that is not an issue with the current usage.
* Use string literal instead of dynamic bufferPierre Ossman2023-02-042-8/+8
| | | | | These don't need to be changed, so let's just keep it simple with a constant string literal.
* Remove unneeded CharArray:sPierre Ossman2023-02-042-10/+9
| | | | | Avoid complicating things by moving things in to a second buffer here as there is no need for it.
* Use StringParameters directlyPierre Ossman2023-02-044-19/+15
| | | | | We don't need to make extra copies of the string in most cases, so let's simplify the code and access the string directly when we can.
* Get rid of TCHAR magicPierre Ossman2023-02-0463-685/+447
| | | | | We never use Windows' "UNICODE" mode anyway, so let's get rid of this complexity.
* Return std::vector instead of dynamic allocationPierre Ossman2023-02-043-19/+12
| | | | | This makes memory management more clear and robust when using these helper functions.
* Move hex conversion helpers to utilPierre Ossman2023-02-042-5/+7
| | | | | These are used here and there so let's make them more general rather than hiding them in the stream classes.
* Use std::vector for basic data arraysPierre Ossman2023-02-013-30/+31
| | | | | Avoid our own custom types in favour of what's already included with C++.
* Use stdint typesPierre Ossman2023-02-0111-41/+42
| | | | | Avoid having our own custom stuff and instead use the modern, standard types, for familiarity.
* Work around -Wcast-function-typePierre Ossman2023-01-052-10/+10
| | | | | That warning doesn't play well with Windows' GetProcAddress(), so add some extra casting to work around it.
* Fix incorrect typesPierre Ossman2023-01-051-1/+1
| | | | | These types caused an incorrect signed/unsigned behaviour, so let's make sure we use the appropriate type.
* Remove useless checksPierre Ossman2023-01-051-1/+1
| | | | These are all truisms because of the valid range of the types.
* Explicitly mark switch case fall throughPierre Ossman2023-01-051-0/+1
| | | | | This allows us to separate accidental fall through from explicit ones, which allows us to turn on such checks in the compiler.
* Explicitly mark unused parametersPierre Ossman2023-01-0416-20/+21
| | | | | This allows us to separate accidentally unused, from explicitly unused parameters, which allows us to turn on such checks in the compiler.
* Don't do access checks on early clientsPierre Ossman2022-11-071-3/+5
| | | | | They don't get access bits until they've been authenticated, so avoid doing any checks on clients in those early states.
* Avoid temporary cmake variablesPierre Ossman2022-06-071-4/+2
| | | | | Modern cmake has better support for adding source files and libraries incrementally, so let's use that to clean things up.
* Enable stream sanity checks in debug buildsPierre Ossman2022-04-061-4/+0
| | | | | | Enable this automatically for developers so we increase the chance of these problems getting caught. There is a risk of overhead though so keep them disabled for release builds.
* Remove 32-/64-bit distinctionsPierre Ossman2022-01-212-14/+4
| | | | | The migration from 32-bit to 64-bit has long passed. Let's get rid of all distinctions as native applications it the norm now.
* Update copyright year to 2022Pierre Ossman2022-01-052-2/+2
|
* Be consistent in including config.hPierre Ossman2021-12-3039-0/+156
| | | | | | The generally recommended way is to include it from source files, not headers. We had a mix of both. Let's try to be consistent and follow the recommended way.
* Add support for notifying clients about pointer movementslhchavez2021-03-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | 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). Part of: #619 1: https://github.com/rfbproto/rfbproto/blob/master/rfbproto.rst#vmware-cursor-position-pseudo-encoding 2: https://tronche.com/gui/x/xlib/input/XWarpPointer.html 3: https://hg.libsdl.org/SDL/file/28e3b60e2131/src/events/SDL_mouse.c#l804
* Update copyright year to 2021Pierre Ossman2021-01-252-2/+2
|