Commit Graph

36 Commits

Author SHA1 Message Date
efea17a5fe [client,SDL] Handle window sizing on scaled displays 2026-03-04 17:48:09 +09:00
Armin Novak
5b4fae7afb [client,sdl] ignore input events unless connected
Ignore events that occur while the client is not fully connected.
2026-03-01 08:02:42 +01:00
Armin Novak
0445ed6734 [winpr,pubsub] check return of PubSub_Subscribe 2026-02-27 15:52:32 +01:00
Armin Novak
6ac6eaec9b [client,sdl] remove multimonitor warning 2026-02-25 19:39:28 +01:00
Armin Novak
d20f9af0e8 [client,sdl] fix single window dynamic screen updates 2026-02-17 16:38:35 +01:00
Armin Novak
66d84e7f45 [client,sdl] fix a memory leak on startup 2026-02-17 16:14:15 +01:00
Armin Novak
da71c28c9c [client,sdl] create a map of pixel coordinates
We need pixel coordinates for each monitor, but SDL may return logical
coordinates depending on HighDPI mode used by the system.
This commit does:
* Detect which HighDPI mode is in use isHighDPIWindowsMode
* Creates a map of pixel coordinates for each monitor
  * recreated whenever a monitor changes)
  * Updates the window rdpMonitor data for existing windows
2026-02-13 19:24:15 +01:00
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
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
fd9d199fd5 [client,sdl] use bounds checking vector accessors 2026-02-10 19:27:48 +01: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
b7a92956e6 [client,sdl] log all cursor related errors 2026-01-29 22:00:46 +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
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
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
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
57034f2294 [client,sdl] fix compiler warnings 2026-01-27 15:22:36 +01:00
akallabeth
947427a911 [client,sdl] simplify event handling
pass on events to SdlContext and let the class handle it internally
2026-01-27 15:22:35 +01:00
akallabeth
c6b104cce0 [client,sdl] wrap mouse cursor move in SdlContext 2026-01-27 15:22:31 +01:00
akallabeth
2e7639d903 [client,sdl] add coordinat conversion functions
* pixel to screen mapper
* screen to pixel mapper
* local scaling add/remove for smart-sizing
2026-01-27 15:22:30 +01:00
akallabeth
7258c77838 [client,sdl] fix local scaled drawing
* Add scaling factor to drawing routines
* Update local scaling on each draw
2026-01-27 15:22:25 +01:00
akallabeth
1ce038c12b [client,sdl] unify stringification functions 2026-01-27 15:22:23 +01:00
akallabeth
abdedab33c [client,sdl] encapsulate and unify event handling
* move event handling to SdlContext
* name functions similar
2026-01-27 15:22:22 +01:00
akallabeth
2bbe3310ba [warnings] fix compiler and clang-tidy issues 2026-01-27 15:22:18 +01:00
akallabeth
845ef25997 [client,sdl] fix unused return warnings 2026-01-27 15:22:15 +01:00
akallabeth
caffbab7d4 [client,sdl] fix display channel updates
* always send updates if enabled and a monitor setting changed
* properly handle window and display updates
2026-01-27 15:22:14 +01:00
akallabeth
2fe15703b3 [client,sdl] split SdlContext to separate files 2026-01-27 15:22:12 +01:00