Commit Graph

4999 Commits

Author SHA1 Message Date
akallabeth
e2dd2eedab [client,sdl] implement display detection handling
* SdlContext::detectDisplays to create a initial list of displays and
  their rdpMonitor configuration
* SdlContext::getDisplays to query a SDL_DisplayID at runtime
* SdlContext::getDisplayIds to query available SDL_DisplayID at runtime
2026-02-13 19:24:15 +01:00
akallabeth
efa15e1dc2 [client,sdl] implement a static SdlWindow::query function
The display settings can not be proplerly queried by SDL without a
window. Create a temporary, invisible window for a requested monitor and
query the required details from that window.
2026-02-13 19:24:14 +01:00
akallabeth
99a44990ba [client,sdl] rename SdlContext::removeDisplay
To match with SdlContext::addDisplayWindow rename it to
SdlContext::removeDisplayWindow
2026-02-13 19:24:10 +01:00
14c66c8bfc [client,SDL] Fix properly handle smart-sizing
* In fullscreen set desktop resolution to argument provided with
  /smart-sizing:<width>x<height>
* In window mode set the window size to /size:<width>x<height> and the
  remote resolution to /smart-sizing:<width>x<height>
* Ignore and print a warning if /multimon is in use (currently not
  defined)
2026-02-13 09:07:09 +01:00
Armin Novak
b4c9ab9e93 [client,x11] apply /size:xx% only once 2026-02-11 09:46:05 +01:00
tsz8899
ecc18608ad [client,windows] Enhance memory safety with NULL checks and resource protection 2026-02-11 09:06:52 +01:00
Armin Novak
fd9d199fd5 [client,sdl] use bounds checking vector accessors 2026-02-10 19:27:48 +01:00
Armin Novak
adbab03503 [client,sdl] modernize C++: use std::scope_guard 2026-02-10 15:53:07 +01:00
Armin Novak
6f6ab57eb7 [client,sdl] use std::make_shared 2026-02-10 15:53:05 +01:00
Armin Novak
5624856b8b [client,sdl] fix missing include 2026-02-10 15:53:03 +01:00
Armin Novak
ec39fbad59 [client,x11] do not va_end uninitialized list 2026-02-10 15:53:03 +01:00
akallabeth
cb3fb59a89 Merge pull request #12285 from akallabeth/pulse-name
Use application details for names
2026-02-10 12:18:25 +01:00
Armin Novak
2679cf6bf8 [client,x11] refactor headers
* Use a forward definition in xf_types.h for xfContext
* Resolve circular dependencies on xfreerdp.h
2026-02-10 11:29:21 +01:00
Armin Novak
d3e8b3b936 [client,x11] lock cache when providing data 2026-02-10 11:26:12 +01:00
Armin Novak
169d358734 [client,x11] destroy XImage on window unmap
When unmapping rails window destroy the cached XImage of appWindow
2026-02-10 11:26:08 +01:00
Armin Novak
dac2c20800 [client,common] use application details for messages 2026-02-10 11:20:14 +01:00
Armin Novak
1994e98442 [client,x11] lock appWindow
When using xf_rail_get_window lock the hash talbe until xf_rail_return_window
2026-02-09 18:30:11 +01:00
Armin Novak
b4f0f0a18f [client,x11] fix xf_rail_window_common cleanup
leave the appWindow for later cleanup.
2026-02-09 15:50:19 +01:00
Armin Novak
9362a0bf8d [client,x11] stringfiy functions for RAILS 2026-02-09 13:39:28 +01:00
Armin Novak
58409406af [client,X11] fix clipboard update
Synchronize channel thread with RDP thread when accessing clipboard
formats
2026-02-09 12:59:00 +01:00
akallabeth
2341b5cec3 Merge pull request #12268 from tsz8899/feat/keyboard-sync-complete-recommit
[client,windows] Implement complete keyboard indicator synchronization
2026-02-09 12:39:14 +01:00
akallabeth
12947ae121 Merge pull request #12248 from motor-dev/master
[client,sdl] fix multimon/fullscreen on wayland
2026-02-09 08:54:27 +01:00
akallabeth
68bf770f94 Merge pull request #12261 from tsz8899/fix/window-handle-validation
[client,windows] Add window handle validation in RDP_EVENT_TYPE_WINDOW_NEW
2026-02-09 08:45:04 +01:00
akallabeth
258f07d269 Merge pull request #12264 from tsz8899/feat/error-handling-enhancements
[client,windows] Enhance error handling and context validation
2026-02-09 08:44:47 +01:00
tsz8899
73a82577fa [client,windows] Initialize variable in wf_keyboard_set_indicators as requested 2026-02-08 21:52:14 +08:00
tsz8899
ed371b216a [client,windows] Fix return value checks for mouse event functions 2026-02-08 20:27:38 +08:00
tsz8899
9c3b638a5c [client,windows] Implement complete keyboard indicator synchronization 2026-02-07 02:33:01 +08:00
tsz8899
65fb43add6 [client,windows] Enhance error handling and context validation 2026-02-06 13:55:26 +08:00
tsz8899
b8a7e2ddf0 [client,windows] Add window handle validation in RDP_EVENT_TYPE_WINDOW_NEW 2026-02-06 13:48:47 +08:00
motor-dev
d01698752c [client,sdl] fix multimon/fullscreen on wayland
Help SDL identify the display to use for fullscreen even when compositors interfere with window positions.
SDL respects the intent of a window if it is moved to the appropriate display just before it is made fullscreen.
2026-02-05 23:16:24 +01:00
akallabeth
123be8e009 [client,x11] fix orientation setting of rdpMonitor 2026-01-29 22:19:20 +01:00
akallabeth
b7a92956e6 [client,sdl] log all cursor related errors 2026-01-29 22:00:46 +01:00
akallabeth
f24ac2c7b0 [client,sdl] add SDL_Error to exceptions 2026-01-29 20:46:21 +01:00
akallabeth
4e3b4d9371 [client,sdl] do not apply window offset
only apply the offsets if multimon drawing is active.
2026-01-28 22:44:21 +01:00
akallabeth
a97a2ef24d [client,sdl] refactor exception class 2026-01-28 22:05:32 +01:00
akallabeth
a9e3954076 [client,sdl] simplify mouse cursor update and restore 2026-01-28 21:49:31 +01:00
akallabeth
7e220eee98 [client,sdl] ignore missing renderer
When trying to map screen to pixel coordinates ignore a NULL renderer.
This was sometimes observed with X11 backend.
2026-01-28 21:31:59 +01:00
akallabeth
241f338ad1 [client,sdl] log all sdl_run errors 2026-01-28 21:31:57 +01:00
akallabeth
fe9a1b0eed [client,sdl] add error checks and logs 2026-01-28 21:31:54 +01:00
akallabeth
2bec6913a8 [client,sdl] fix multimonitor mouse coordinates
apply monitor offset to window coordinates.
2026-01-28 21:31:50 +01:00
akallabeth
1be664218c [client,sdl] simplify window creation 2026-01-28 13:41:05 +01:00
akallabeth
3eb660ace5 [client,sdl] remove display id from title 2026-01-28 13:22:29 +01:00
akallabeth
56d6836ceb [client,sdl] update mouse pointer when mouse enters 2026-01-28 13:22:26 +01:00
Armin Novak
501740404f [client,sdl] check for XWayland for warning
Also check for a wayland environment if the SDL driver is x11. This is
also affected by the multimonitor bug.
2026-01-27 15:35:12 +01:00
Armin Novak
00cfc36987 [client,sdl] warn about multimonitor issues 2026-01-27 15:22:44 +01:00
Armin Novak
197ac808fd [client,sdl] handle render events in SdlContext 2026-01-27 15:22:42 +01:00
Armin Novak
03c350950a [client,sdl] handle input events in SdlContext 2026-01-27 15:22:41 +01:00
Armin Novak
ba07955689 [client,sdl] handle clipboard events in SdlContext 2026-01-27 15:22:40 +01:00
akallabeth
dcdde8122d [client,sdl] adjust nodiscard use for dialogs 2026-01-27 15:22:39 +01:00
akallabeth
d74eecff3b [client,sdl] ignore set_mouseover result
The function might return false if no item was selected.
2026-01-27 15:22:37 +01:00