Commit Graph

293 Commits

Author SHA1 Message Date
Ondrej Holy
e197d27c8d
[client,sdl] move prefs to static lib
This is in preparation for the subsequent commit adding test case for
the prefs functionality to avoid building the code twice.
2024-05-16 11:56:13 +02:00
Ondrej Holy
702acc93c6
[client,sdl] remove duplicated include statement 2024-05-16 11:55:58 +02:00
akallabeth
aaded541d9
[core,client] replace cJSON with WinPR wrapper
use the new WinPR JSON wrapper API
2024-05-14 20:45:31 +02:00
Armin Novak
c172713c41 [client,sdl] handle dialog on key up event
Handle keyboard input dialog status change on key up event. If handled
on key down event the dialog closes and the key up event is handled on
the next SDL event queue (usually connection dialog cancel)
Fixes #10133
2024-04-24 10:35:22 +02:00
akallabeth
3cf4bac0e8 [client,sdl] implement key remapping 2024-04-19 12:59:01 +02:00
Armin Novak
390762bff9 [client,sdl] initialize member 2024-04-17 18:47:16 +02:00
Armin Novak
2500fb7bfb [cleanup] refactor some checks 2024-04-15 12:40:01 +02:00
Armin Novak
587175fdb8 [coverity] 1543090 Division or modulo by float zero 2024-04-15 12:40:01 +02:00
Armin Novak
8633a437e0 [coverity] 1543094 Use of auto that causes a copy 2024-04-15 11:30:31 +02:00
Armin Novak
a77a0c45d7 [coverity] 1543261 Not restoring ostream format 2024-04-15 11:30:31 +02:00
Armin Novak
b197ae8a05 [coverity] 1543280 Data race condition 2024-04-15 11:30:31 +02:00
akallabeth
793145b8c5 [coverity] 1543198 Explicit null dereferenced 2024-04-12 09:45:09 +02:00
akallabeth
678ff144ab [cmake] unify windows resource file generation
* use a macro to add resource files for executables and shared libraries
* use that macro to declare targets
* use that macro to set library/binary versioning
* use that macro to set target output name
* use a macro to create manpages and names
2024-03-20 11:17:18 +01:00
akallabeth
1f22a4f954 [client,sdl] ignore blit that does not intersect
SdlWindow::blit might be called for areas that do not intersect the
surface. Return success in such cases to avoid terminating a session.
2024-03-11 12:32:35 +01:00
akallabeth
43a70ccb90 [client,sdl] use std::filesystem u8string() 2024-02-27 14:10:14 +01:00
akallabeth
f84108010b [client,sdl] use uint32_t instead of SDL_Keymod
the SDL_Keymod enum is not suitable to hold a mask of SDL_Keymod values
2024-02-23 10:02:08 +01:00
akallabeth
517cd69107 [client,sdl] remove not existing docbooc xml 2024-02-23 10:02:08 +01:00
akallabeth
a2b220f828 [client,sdl] fix smartcard pin dialog result 2024-02-22 13:13:49 +01:00
akallabeth
5d3ffea061 [client,sdl] unify window related operations
Access window related operations only in SdlWindow class
2024-02-22 13:13:49 +01:00
akallabeth
867e663872 [client,sdl] add windowevent-id to string 2024-02-22 13:13:49 +01:00
akallabeth
8492738b0d [client,sdl] tidy up code 2024-02-22 13:13:49 +01:00
akallabeth
d7ebec5a65 [tidy] move loop variable declaration to loop 2024-02-22 12:31:50 +01:00
Armin Novak
62f974a5c2 [client,sdl] add shortcut config file
Allow keyboard shortcuts to be configured via config file.
2024-02-22 12:24:51 +01:00
MatteoBax
29b38506b9 Fix undeclared identifier ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED 2024-02-21 08:48:55 +01:00
akallabeth
75b1ce8ef6 [client,sdl] relax CriticalSection locking
When disconnecting the SDL client it is sufficient to no longer process
SDL events. Locking the CriticalSection during disconnect might lead to
a deadlock.
2024-02-20 16:31:50 +01:00
akallabeth
f3c0d22005 [client,sdl] thread safe RDP disconnect
When the RDP session is terminated ensure that no more SDL events are
processed as they might try to access RDP context data.
2024-02-20 09:25:33 +01:00
akallabeth
fd49e00f9c [warning] use nullptr for C++ code 2024-02-15 11:49:16 +01:00
akallabeth
0e44b2c674 [clang-tidy] clang-analyzer-unix.Malloc 2024-02-15 11:49:16 +01:00
akallabeth
0ba995655d [clang-tidy] cppcoreguidelines-init-variables 2024-02-15 11:49:16 +01:00
akallabeth
207def5c56 [clang-tidy] readability-isolate-declaration 2024-02-15 11:49:16 +01:00
akallabeth
e2e6d09256 [cmake] use DEFAULT_DEBUG_OPTION for all 2024-02-13 17:06:00 +01:00
akallabeth
b193f9ab59 [cmake] guard cmake_policy(CMP0091)
only set the policy to NEW if it is defined
2024-02-13 16:22:37 +01:00
Armin Novak
cc558bd4c5 [client,sdl] add missing include 2024-02-10 06:57:34 +01:00
akallabeth
8b04ab53eb [cmake] disable WITH_WEBVIEW if not build on linux/bsd 2024-01-29 10:01:23 +01:00
akallabeth
465745131e [client,sdl] fix verbose logging
only call SDL_DestroyTexture if texture != NULL
2024-01-22 13:09:25 +01:00
Armin Novak
a45e464d6f [client,SDL] check for timer initialized
before manipulating SDL timers check if the SDL subsystem was actually
initialized. Fixes #9736
2024-01-10 19:53:05 +01:00
akallabeth
2b39afcc7a [client,SDL] optimize map lookup 2024-01-05 09:18:07 +01:00
Armin Novak
a7decba8c2 [cmake] unify common options 2023-12-22 16:21:30 +01:00
Armin Novak
7debd0f621 [cmake] set policy 0091
On windows we need to set the runtime linker settings extra
https://cmake.org/cmake/help/latest/policy/CMP0091.html
2023-12-22 15:37:56 +01:00
Armin Novak
19d3c27e3d [cmake] link SDL only static if explicitly requested 2023-12-22 15:37:56 +01:00
Armin Novak
11d84f067d [client,sdl] fix full static linking 2023-12-22 15:37:56 +01:00
Armin Novak
175a3ca09a [cmake] do not append EXECUTABLE_SUFFIX to OUTPUT_NAME 2023-12-22 15:37:56 +01:00
Armin Novak
7d641a67b9 [doc,manpage] name manpages versioned
if WITH_BINARY_VERSIONING is activated also version the manpages to
match the binary names
2023-12-22 10:24:09 +01:00
Armin Novak
2b654a8226 [client,sdl] use versioned resource location
if WITH_BINARY_VERSIONING is ON also use versioned resource locations.
2023-12-22 10:24:09 +01:00
Armin Novak
b04271ae2d [cmake] add executable versioning
optionally append API version to generated binaries
2023-12-21 18:56:51 +01:00
Armin Novak
7f25a7cebf [cmake] provide default project version
each subproject inherits the project version of the top level project
2023-12-21 18:56:51 +01:00
Armin Novak
3e53b3ecce [client,sdl] work around c++ static initialization
wrap the factory map in a function to ensure it is initialized first.
2023-12-21 16:34:04 +01:00
Armin Novak
8fa938f629 [client,sdl] make dialog image support optional 2023-12-21 16:34:04 +01:00
Armin Novak
fcdb1a6fd4 [client,sdl] dialogs respect UseCommonStdioCallbacks
If FreeRDP_UseCommonStdioCallbacks is set do not show connection/error
dialogs but only print to console
2023-12-21 12:26:24 +01:00
Armin Novak
ad0de52ab6 [client,sdl] show error dialog on session quit
if a session is terminated in an unusual way (e.g. not user action) show
an error dialog.
2023-12-21 07:11:12 +01:00
Armin Novak
c395094f73 [client,sdl] fix connection dialog reset
only clean up on sdl thread quit to show error dialogs after the RDP
connection already terminated.
2023-12-21 07:11:12 +01:00
Armin Novak
46179077b9 [client,sdl] reset connection dialog on sdl quit 2023-12-20 23:16:10 +01:00
Armin Novak
c269086765 [client,sdl] show a logo on connection dialog
* Show a icon to indicate the type of message
* Show the FreeRDP logo below the icon
2023-12-20 23:16:10 +01:00
Armin Novak
23f8fd2fee [client,sdl] lock connection dialog access
might happen from different threads.
2023-12-20 23:16:10 +01:00
Armin Novak
3bdaca81d0 [client,sdl] fix c++ static initialization order 2023-12-20 23:16:10 +01:00
Armin Novak
3095814184 [client,sdl] add pre std::filesystem compatibility 2023-12-20 23:16:10 +01:00
Armin Novak
187f562098 [client,sdl] generate binary resources during build 2023-12-20 23:16:10 +01:00
Armin Novak
41665700bb [client,sdl] added resource manager 2023-12-20 23:16:10 +01:00
Armin Novak
c952fae5b1 [client,sdl] add icon to connect dialog 2023-12-20 23:16:10 +01:00
Armin Novak
35d584287d [client,sdl] improve file to array helper 2023-12-20 23:16:10 +01:00
Armin Novak
dd7115889d [client,sdl] improve connection dialog 2023-12-20 23:16:10 +01:00
Armin Novak
765129aacf [client,sdl] improve dialog test drawing 2023-12-20 23:16:10 +01:00
Armin Novak
5e6ca89ded [client,sdl] add SDL quit event wrapper 2023-12-20 23:16:10 +01:00
Armin Novak
a8eaf2a38d [client,sdl] improve dialog button highlighting
move state to buttons or button list
2023-12-20 23:16:10 +01:00
Armin Novak
e6384c06c2 [client,sdl] fix smartcard chooser dialog 2023-12-20 23:16:10 +01:00
Armin Novak
b89f025c5b [client,sdl] hide connection dialog
if another dialog is shown hide the connection dialog.
2023-12-20 23:16:10 +01:00
Armin Novak
caac867c79 [client,sdl] fix ubuntu 20.04 compatibility 2023-12-20 23:16:10 +01:00
Armin Novak
e1de32f9ab [client,sdl] add connection dialog 2023-12-20 23:16:10 +01:00
Armin Novak
6e718f7958 [client,sdl] add signal termination handler 2023-12-20 23:16:10 +01:00
Armin Novak
7ba84737ba [client,sdl] wrap sdl windows in c++ class
use RAII for SDL window creation/destruction by wrapping it in
SdlWindow constructor/destructor
2023-12-20 11:24:31 +01:00
Armin Novak
65da185275 [client,sdl] respect -decorations
Disable window borders if requested, fixes #9673
2023-12-20 09:27:39 +01:00
Armin Novak
c064d54cb1 [client,sdl] add manpage 2023-12-20 09:21:31 +01:00
Armin Novak
8df97272b7 [client,sdl] correctly handle AuthenticateEx 2023-12-20 09:07:35 +01:00
Nicolas Höft
396e13a928 [client,sdl] Do not disable compositing on Linux
This can be overridden by setting the environment variable
SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR=1
2023-12-16 20:57:53 +01:00
Armin Novak
ed4c1e1685 [client,sdl] unify dialog result wait 2023-12-15 09:11:33 +01:00
Armin Novak
f4bc5e69c2 [client,sdl] handle smartcard logon dialog error 2023-12-15 09:11:33 +01:00
Armin Novak
749da7eefc [client,sdl] add smartcard chooser dialog 2023-12-15 09:11:33 +01:00
st0ne77
8dc01cebb0 [client,sdl] propagate error from auth dialog 2023-12-15 09:11:33 +01:00
Armin Novak
67f4dcabdc [git] remove build artifact 2023-12-12 19:36:54 +01:00
Armin Novak
d89ef74163 [client,sdl] use SDL timer for display resize
* use SDL timer instead of freerdp implementation
* Disable timer after all events have been processed
2023-12-11 11:59:45 +01:00
Armin Novak
f4fcf3f96f [client,sdl] fix crash #9627
lock SDL context while recreating window structures.
2023-12-11 11:59:45 +01:00
Armin Novak
6f6c0248f0 [client,common] check for relative mouse events
Added freerdp_client_use_relative_mouse_events to tell the client if the
coordinates should be relative or absolute
2023-12-06 10:45:01 +01:00
akallabeth
615fcc4370 [cmake] prevent in source builds 2023-11-28 12:14:55 +01:00
akallabeth
4e438d1c3e [client] make settings opaque 2023-11-24 14:54:56 +01:00
Armin Novak
e0e72f9c28 [cmake] use CMAKE_MSVC_RUNTIME_LIBRARY
* Increase required CMake version to 3.15 (windows only)
* Use
  https://cmake.org/cmake/help/latest/prop_tgt/MSVC_RUNTIME_LIBRARY.html#prop_tgt:MSVC_RUNTIME_LIBRARY
  to select windows runtime
2023-11-16 10:40:04 +01:00
Armin Novak
70a360bf38 [client,sdl] clear screen on resize
* clear screen on window resize
* redraw window on window resize
2023-11-06 08:48:49 +01:00
Armin Novak
1bb09089a7 [client,sdl] ignore LOGON_MSG_SESSION_CONTINUE
do not display a popup for this kind of message.
2023-11-03 08:25:02 +01:00
Max Roncace
eefe052690 [client,sdl] Fix primary monitor logic in multimon 2023-10-13 16:06:18 +02:00
Max Roncace
7e50a92eb9 [client,sdl] Fix stored window offset for multimon
SDL_WINDOWPOS_CENTERED_DISPLAY returns a magic value which causes issues
when it's eventually passed to SDL_BlitSurface.

Fixes #9441
2023-10-13 16:05:39 +02:00
akallabeth
927b553ad7 [client,sdl] send relative mouse button events 2023-10-13 16:05:27 +02:00
akallabeth
c7b123076a [client,sdl] keep SDL_RWops open
the application crashes if we close the SDL_RWops after opening the
font. keep it open until the widget is destroyed
2023-10-10 22:59:53 +02:00
akallabeth
33c1183fe1 [client,sdl] fixed tests and detection
* add a pkg-config fallback for SDL2_ttf, current ubuntu does not ship
  the cmake config
* deactivated SDL dialog test cases, now compiles properly
2023-10-10 22:59:53 +02:00
akallabeth
0529658e75 [cmake] cleaned out unused cmake files 2023-10-10 22:59:53 +02:00
Armin Novak
7a4e989dcb [client,sdl] fix #9442: handle alt+tab fullscreen 2023-10-10 12:33:29 +02:00
akallabeth
54a5512939 [client,sdl] fix RWops leak 2023-09-14 15:59:57 +02:00
akallabeth
285add3a85 [client,sdl] use SDL_WaitEventTimeout
polling is expensive, so use a waitable function instead
2023-08-31 11:39:22 +02:00
akallabeth
60dd48e698 [api] fix integer overflow warnings 2023-08-25 14:36:05 +02:00
akallabeth
bb5345c60e [freerdp,api] add FREERDP_ENTRY_POINT
C requires prototypes or compilers will complain about them missing. Our
library entry points do not have such, therefore add the macro
FREERDP_ENTRY_POINT which declares the function prototype automatically
before the function.
2023-08-25 14:36:05 +02:00
akallabeth
ad11ef916c [client,sdl] fix compiler warnings 2023-08-25 12:56:36 +02:00
Kimon Hoffmann
8ec4d20616 [cmake] Locate PkgConfig module with find_package() instead of include(FindPkgConfig)
This is the contemporary way of including find modules and including the
find module this way avoids cmake errors in conjunction with
find_package_handle_standard_args().

Signed-off-by: Kimon Hoffmann <Kimon.Hoffmann@lawo.com>
2023-08-21 12:43:56 +02:00
Armin Novak
fafc2e61f9 [client,sdl] redirect sdl log to wlog 2023-08-04 12:59:11 +02:00
akallabeth
8470b6ea26 [cmake] set default build type
set with CACHE STRING FORCE to properly be picked up by configuration
tools
2023-08-04 12:59:11 +02:00
akallabeth
0e458c8c2c [cmake] WITH_WEBVIEW new defaults
* Enable by default now
* Use a config file to detect if it is enabled
2023-08-04 12:59:11 +02:00
Armin Novak
7ad32b3e2a [client,sdl] clean up code
use local variable for often used accessor
2023-07-31 13:41:26 +02:00
Armin Novak
ff26ca1e39 [client,sdl] use member instead of static variable 2023-07-31 13:41:26 +02:00
Armin Novak
b3fdebfdf7 [client,sdl] position windows centered on monitor 2023-07-31 13:41:26 +02:00
Armin Novak
eca4017c8b [client,sdl] enable multimon support for display channel 2023-07-31 13:41:26 +02:00
Armin Novak
aa2c48840a [client,sdl] fix high dpi detection
* convert dpi value to percentage used by RDP
* fix detection of current monitor resolution for SDL windows
2023-07-31 13:41:26 +02:00
Dan Holliday
1d64c8d93c Started to add support for multi-monitor. 2023-07-31 13:41:26 +02:00
Dan Holliday
75bc1505ab Added the ability to quite the RDP session by pressing "r-ctrl + shift + D". The reason for this is when in full screen I have no way to exit from xrdp if I don't want to close my session. 2023-07-31 13:41:26 +02:00
Dan Holliday
7234b0a2f1 Added the ability to quite the RDP session by pressing "r-ctrl + shift + D". The reason for this is when in full screen I have no way to exit from xrdp if I don't want to close my session. 2023-07-31 13:41:26 +02:00
Dan Holliday
8c584c29dd Started to add support for multi-monitor. 2023-07-31 13:41:26 +02:00
Dan Holliday
4eee7a54ad Added the ability to quite the RDP session by pressing "r-ctrl + shift + D". The reason for this is when in full screen I have no way to exit from xrdp if I don't want to close my session. 2023-07-31 13:41:26 +02:00
Armin Novak
3df928a8d2 [client,sdl] fixed member initialization order and casts 2023-07-28 13:42:12 +02:00
Armin Novak
e61880d077 [standard] replace __FUNCTION__ with __func__ 2023-07-27 20:02:43 +02:00
Armin Novak
9ea1ab285b [client,sdl] set gui consent message 2023-07-26 20:50:21 +02:00
Armin Novak
4f0ca73be6 [cmake] set MSVC runtime for SDL client 2023-07-26 16:19:07 +02:00
Armin Novak
0cd774d2c0 [client,sdl] fix cleanup order
destroy SDL_Renderer before SDL_Window
2023-07-25 09:11:11 +02:00
Armin Novak
4816a7d2a5 [cmake] require freetype for sdl2ttf 2023-07-24 10:49:38 +02:00
Armin Novak
315acc6aa9 [client,sdl] fix std::vector initialization
MSVC 2013 does not like too large vector initialization, work around
with https://stackoverflow.com/questions/31028941/how-to-avoid-compiler-limit-compiler-stack-overflow-with-large-vector-inits/31029335#31029335
2023-07-24 10:49:38 +02:00
Armin Novak
f00e73cec4 [client,sdl] fix constructor, initialize pointers
some initialization might fail, so initialize them beforehand.
2023-07-24 10:49:38 +02:00
akallabeth
80091cba6a [client,sdl] add MSVC macro for missing noexcept 2023-07-21 14:53:19 +02:00
akallabeth
33d8e8e41b [client,sdl] replace memset with c++ string iteration 2023-07-21 14:53:19 +02:00
akallabeth
9eb80ffb19 [client,sdl] add dialog paste support 2023-07-21 14:53:19 +02:00
akallabeth
6be08815e5 [client,sdl] add OpenSans license and ttf font 2023-07-21 09:50:02 +02:00
Armin Novak
b28521d2d9 [client,sdl] use TTF_OpenFontRW
In combination with SDL_RWFromConstMem the font can be embedded without
using an intermediate file to load it from.
2023-07-21 09:50:02 +02:00
akallabeth
b259545bbb [client,sdl] update AAD/AVC callback handling 2023-07-21 09:14:54 +02:00
Armin Novak
1b79b60634 added webview scheme handler 2023-07-21 09:14:54 +02:00
akallabeth
8b0f4ca106 [client,sdl] move webview to static lib
* move to static lib aad-view
* add support for https://github.com/webview/webview (e.g. use native
  webview if available)
2023-07-21 09:14:54 +02:00
Armin Novak
06fd58264e [client,sdl] add a simple test for dialogs 2023-07-20 14:25:08 +02:00
Armin Novak
1a62103a08 [client,sdl] add support for win32 executables
Allow building with support for console or WinMain applications
2023-07-20 14:25:08 +02:00
akallabeth
97415f0d52 [client,sdl] add user dialogs 2023-07-20 14:25:08 +02:00
akallabeth
734117351d [aad,avc] unify callbacks to GetAccessToken
The AAD and AVD authentication mechanisms both need an OAuth2 token.
They only differ in the provided arguments, so unify the callbacks into
a single one with variable argument lists.
2023-07-20 14:20:28 +02:00
fifthdegree
d309fcd6e8 Restructure Azure AD related stuff
- Move responsibility for obtaining access tokens to clients
- Add function for getting access tokens for AVD
- Get correct server hostname during AVD setup
- Add utility function for doing http requests
2023-07-20 14:20:28 +02:00
Martin Fleisz
622a2a8df0 misc: More int to BOOL conversion fixes
This is a follow up to #9129.

This PR fixes some problematic `int` to `BOOL` conversions that might
cause overflows when checking for bit flags.
2023-07-04 09:45:20 +02:00
fifthdegree
5dd1363b8e Fix format issue in building url for sdl webview 2023-06-19 08:42:33 +02:00
Dan Holliday
f2ae9c00be Added the ability to quite the RDP session by pressing "r-ctrl + shift + D". The reason for this is when in full screen I have no way to exit from xrdp if I don't want to close my session. 2023-06-14 08:49:21 +02:00
Dan Holliday
72b614262f Fixed some incorrect key mappings with. I found that the "+/=" key on a UK keyboard didn't do anything. I also found that the "+" key on the keypad acted as if it was the "+/=" key. I've corrected some of the keycodes and confirmed that they keyboard functions as expected. 2023-06-14 08:49:21 +02:00
Armin Novak
a0fd9cf957 [client,sdl] encapsulate c++ context
to properly initialize c++ us a heap allocated wrapper class
2023-06-05 14:15:03 +02:00
Armin Novak
da7c3b688f [client,sdl] use unique_ptr for SDL_Surface et al 2023-05-31 11:29:21 +02:00
Armin Novak
68995ddffb [client,sdl] wrap WinPR event in class 2023-05-31 11:29:21 +02:00
Armin Novak
ccbcc4cb65 [client,sdl] wrap critical section in class 2023-05-31 11:29:21 +02:00
Armin Novak
63ed6dc771 [client,sdl] use std::thread 2023-05-31 11:29:21 +02:00
Armin Novak
16cbe8882d [client,sdl] unique_ptr for input 2023-05-31 11:29:21 +02:00
Armin Novak
1a74d832de [client,sdl] unique_ptr for display channel 2023-05-31 11:29:21 +02:00
Armin Novak
324e8c7813 [client,sdl] use SDL_WaitEvent 2023-05-31 11:29:21 +02:00
Armin Novak
481ba1581c [client,sdl] fixed warning in webview 2023-05-30 15:42:39 +02:00
akallabeth
f941a1ec8e [cmake] unify RPATH settings and client deps detection 2023-05-26 11:38:32 +02:00
akallabeth
b8f7b59fff [warnings] fix casts and return 2023-05-24 08:24:32 +02:00
akallabeth
9f2d22c975 [client,sdl] refactor webview 2023-05-24 08:24:32 +02:00