Cameron Gutman
cdacb3d28d
Loosen applist XML validation to accept empty app names
...
This matches the behavior of the Android and iOS clients.
Fixes #1921
2026-06-28 12:18:42 -05:00
Cameron Gutman
5034a324b4
Fix manual address being clobbered when using the CLI
...
Fixes #1920
2026-06-28 11:48:09 -05:00
Cameron Gutman
e223bf9a1b
Use libplacebo renderer on macOS
2026-06-25 22:30:03 -05:00
Cameron Gutman
6e231778a2
Fix blocking during rendering rather than in waitToRender() on MoltenVK
...
MoltenVK does a lazy fetch of the drawable only when it's being modified, so waitToRender() is completely ineffective as is. Rendering a small empty overlay in waitToRender() forces the next drawable wait to happen in waitToRender(), before we pick the current frame to render. This removes one display refresh period of latency when using V-sync.
2026-06-25 20:01:29 -05:00
Cameron Gutman
d997a0d0c8
Dynamically adjust libplacebo swapchain depth on macOS
...
Direct-to-display mode on some Macs (M4 Mac Mini) can retain our drawables, which cuts the frame rate in half if we're in double-buffered mode.
We don't want to use triple-buffered mode all the time because it increases latency when used if not required, so detect delayed presentation and enable it on the fly if needed.
2026-06-23 21:09:20 -05:00
Cameron Gutman
06bd8a730b
Force sRGB Vulkan swapchain on macOS to fix washed out colors
2026-06-23 19:19:56 -05:00
Cameron Gutman
faa39875b6
Remove outdated comment
2026-06-21 15:19:44 -05:00
Cameron Gutman
170801ba9f
Send the real client UID for non-GFE hosts
...
This allows non-GFE hosts to perform their own custom session
management while allowing all clients to share the same session
with GFE.
2026-06-21 15:18:12 -05:00
Cameron Gutman
1be234e96a
Load the UID during initialization to avoid races loading it later
2026-06-21 15:14:58 -05:00
Cameron Gutman
50364fd522
Don't set VK lock/unlock queue functions past libavutil 62
...
They are scheduled for removal at that ABI bump.
2026-06-21 14:01:47 -05:00
Cameron Gutman
bea5355c66
Fix unused parameter warning on Windows and Linux
2026-06-21 14:01:47 -05:00
Cameron Gutman
ca7d61f528
Prefer libplacebo on macOS when available
2026-06-14 19:27:01 -05:00
Cameron Gutman
2b5388e941
Fix non-EGL frontend renderers when compiled without EGL support
2026-06-14 19:16:16 -05:00
Cameron Gutman
a9ad048252
Fix HDR rendering in libplacebo on macOS
2026-06-14 18:58:22 -05:00
Cameron Gutman
51cc5a8537
Remove libplacebo workaround for FFmpeg compiled without Vulkan support
2026-06-14 18:57:46 -05:00
Cameron Gutman
8c6b422040
Implement libplacebo on MoltenVK
2026-06-14 15:45:38 -05:00
Cameron Gutman
ec75f0d8de
Refactor libplacebo renderer to handle non-Vulkan hwcontexts
2026-06-14 12:20:54 -05:00
Cameron Gutman
f2a512d3aa
Update libplacebo, sdl2-compat, OpenSSL, and SDL3
2026-06-12 00:13:18 -05:00
Cameron Gutman
02004bac3f
Allow toggling through combo box options using left/right on gamepads/keyboards
2026-06-07 15:14:29 -05:00
Cameron Gutman
534ce02756
Track keyboard grab state internally rather than using SDL
...
Versions of sdl2-compat prior to 2.32.64 (and native SDL3) won't
set the grab flag if grabbing the keyboard fails, even though the
compositor still may be exclusively passing system keys to us via
some external configuration by the user. This causes the super key
to not be sent to the host, because we think the client OS will
consume it and don't want to duplicate the input.
Fixes #1900
2026-06-06 16:11:37 -05:00
Cameron Gutman
19d77704ba
Update SDL and libplacebo
2026-06-02 02:03:10 -05:00
Cameron Gutman
a2ef7a4a0c
Enable LTO for FFmpeg
2026-05-27 23:21:56 -05:00
Cameron Gutman
dc6c0d3315
Update prebuilts
2026-05-27 02:24:43 -05:00
Cameron Gutman
cd5853c6ca
Update Windows and macOS prebuilt dependencies
...
- Enable LTO/LTCG
- Update SDL3
2026-05-26 22:55:32 -05:00
Cameron Gutman
e6da6fa11f
Enable LTO for AppImage builds
2026-05-26 21:55:58 -05:00
Cameron Gutman
81f20cdb66
Move LTCG/LTO enablement into the build scripts
2026-05-26 21:46:58 -05:00
Cameron Gutman
adfc972371
Enable LTCG/LTO for release builds
2026-05-26 01:23:09 -05:00
Cameron Gutman
53a14eda1c
Update MSVC redistributable in installer bundle
2026-05-26 00:49:48 -05:00
Cameron Gutman
2eb6715be5
Disable WM-dependent hotkeys on LinuxFB too
2026-05-24 15:23:19 -05:00
Cameron Gutman
29294553bb
Add Ctrl+Alt+Shift+K combo to toggle system key grab
...
Fixes #1637
2026-05-24 15:13:23 -05:00
Cameron Gutman
97240cd5f2
Add workaround for libplacebo crash with Raspbian FFmpeg
...
Fixes #1409
2026-05-24 14:43:02 -05:00
Cameron Gutman
8cc001768c
Use UTF-16 literals for XML processing on Qt 6
2026-05-23 21:56:40 -05:00
Cameron Gutman
d94b92e247
Use SDL_utf8strlcpy() to avoid MSVC secure CRT warnings
2026-05-23 19:50:32 -05:00
Cameron Gutman
d9eca42311
Remove redundant QString construction
2026-05-23 19:28:28 -05:00
Cameron Gutman
63c48be6d4
Improve handling of malformed XML responses
2026-05-23 19:16:14 -05:00
Cameron Gutman
459dcd7b2c
Fix incorrect error print
2026-05-16 16:10:47 -05:00
Cameron Gutman
b33a252739
Fix incorrect apply() return value for legacy DRM clients
2026-05-16 16:09:57 -05:00
Cameron Gutman
1eb76bbdb0
Deep copy the BIO's backing memory for the QSslKey
...
This doesn't appear to be a problem in practice, but the docs don't say
that Qt couldn't retain this QByteArray for later, which would result in
a UAF with the current code.
2026-05-16 16:08:02 -05:00
Cameron Gutman
bba2faa602
Fix broken horizontal scroll inversion
2026-05-16 15:45:13 -05:00
Cameron Gutman
87c3179f77
Fix incorrect failure check
2026-05-15 23:23:36 -05:00
Cameron Gutman
073f892bb1
Update Windows and macOS prebuilt dependencies
...
- Reverted to SDL 3.4.x to fix GCMouse issues
Fixes #1882
2026-05-15 19:16:33 -05:00
Cameron Gutman
815db2b0d7
Enable Segment Heap for improved performance and memory usage
2026-05-15 18:37:52 -05:00
Cameron Gutman
a8a66bfc3d
Enable Per Monitor v2 DPI awareness
...
Qt 6 has supported this forever, but our manifest forced PMv1.
2026-05-15 18:13:46 -05:00
Cameron Gutman
8fe279c91b
Add support for controllers with dual touchpads
2026-05-14 22:14:50 -05:00
Cameron Gutman
dedb0c0327
Disable text input before creating windows
2026-05-14 21:45:22 -05:00
Cameron Gutman
9cbba106ad
Use the Metal renderer by default on all Macs
...
Whatever dGPU/eGPU rendering issues existed at the time I wrote that check seem to no longer happen on my RX 480 eGPU test setup running Ventura (our oldest supported OS).
It seems safe enough to enable now, especially since 7d6ce0b4c should catch broken systems and transparently fall back to AVSampleBufferDisplayLayer.
Fixes #1885
2026-05-14 00:45:57 -05:00
Cameron Gutman
7d6ce0b4cc
Implement testRenderFrame() for the VTMetal renderer
...
This can be used to (hopefully) detect cases where importing the decoded frames onto the target GPU fails.
See #1885
2026-05-14 00:34:32 -05:00
Cameron Gutman
92fb7f3b71
Use the (hopefully faster) ARM64 Tahoe runner
2026-05-13 23:49:32 -05:00
Cameron Gutman
b0ac3713f2
Update macOS CI runner to Tahoe
2026-05-13 23:33:30 -05:00
Cameron Gutman
96a211be11
Update Windows and macOS CI builds to Qt 6.11.1
2026-05-13 23:31:14 -05:00
Cameron Gutman
4cf498b09d
Use queued audio duration instead of queued frame count to constrain latency
...
This avoids latency explosion when we negotiate 10 ms instead of 5 ms audio packets.
2026-05-10 21:53:09 -05:00
Cameron Gutman
c21affd15a
Switch to linuxdeploy for AppImages
2026-05-10 16:56:34 -05:00
Cameron Gutman
9d6218d1ff
Don't capture the cursor by default in windowed mode
...
Closes #1872
2026-05-09 13:11:45 -05:00
Cameron Gutman
8cc3b30642
Update Windows, macOS, and AppImage dependencies
2026-05-03 22:36:08 -05:00
Cameron Gutman
d77e2cc913
Update upload-artifact for Node.js 24
2026-05-03 21:06:42 -05:00
Cameron Gutman
453435f916
Switch to downloading prebuilt release artifacts instead of a submodule
2026-05-03 21:04:06 -05:00
Cameron Gutman
f222aa7985
Use aspect ratio preserving scaling for slow GPUs on non-KDE desktops
2026-04-26 23:15:02 -05:00
Cameron Gutman
5faa5fece8
Don't manually override v4l2m2m buffer counts
...
This causes POLLERR when decoding from meson-vdec on the Libre
Computer Alta (and likely other Amlogic boards). Our requried buffer
counts were already lower than the default 16/20 configuration that
FFmpeg uses, so overriding them was just a memory usage optimization.
2026-04-20 00:25:21 -05:00
Cameron Gutman
51f86caac3
Fix assert on exit using KMSDRM on AMDGPU
...
AMDGPU disallows commits that would leave a CRTC active without
the primary plane enabled. Instead of disabling the primary plane,
simply restore the original state of the plane to avoid this.
2026-04-19 23:17:28 -05:00
Cameron Gutman
5d813ed3df
Fix clamping of signed range properties
2026-04-19 22:17:37 -05:00
Cameron Gutman
d17575d47c
Fix deadlock in Vulkan renderer using KMSDRM on AMDGPU
2026-04-19 21:16:45 -05:00
Cameron Gutman
0e50a9d457
Only enable D3D11/DXGI debug layer if Graphics Tools are installed
...
Closes #1857
2026-04-13 20:06:24 -05:00
Cameron Gutman
ed029f194f
Propagate CFLAGS/CXXFLAGS/LDFLAGS environment variables to QMake
...
Closes #1602
2026-04-12 15:51:42 -05:00
Cameron Gutman
569153220a
Enable Brazilian Portuguese now that it is fully translated
2026-04-12 15:27:38 -05:00
Cameron Gutman
e0367d05ae
Rerun lupdate and lrelease
2026-04-12 15:21:18 -05:00
Cameron Gutman
53e0c2534d
Merge remote-tracking branch 'origin/weblate'
2026-04-12 15:19:45 -05:00
Cameron Gutman
a766c9cafc
Disable texture sharing on Qualcomm GPUs
...
See #1857
2026-04-11 20:14:14 -05:00
Cameron Gutman
c685021f21
Update SDL3, dav1d, FFmpeg, and OpenSSL
...
SDL3 -> 3.4.4 (Windows only)
dav1d -> 1.5.3
FFmpeg -> 8.1
OpenSSL -> 3.6.2
Fixes #1394
2026-04-10 20:58:23 -05:00
Cameron Gutman
af03f57e08
Fix Vulkan decoder probing on Nvidia using KMSDRM
2026-04-09 22:11:08 -05:00
Cameron Gutman
1fc1122c65
Consolidate test window creation code
2026-04-09 21:43:35 -05:00
Cameron Gutman
94d47e95fe
Fix non-determinism during Vulkan decoder probing on KMSDRM
2026-04-09 21:37:25 -05:00
Cameron Gutman
2160f029d2
Bump aqtinstall to a later commit to pick up Qt 6.11 deployment fix
2026-04-08 21:39:37 -05:00
Cameron Gutman
1ec1a3d7ad
Move ifdef guards to fix unused variable warning
2026-04-08 21:26:33 -05:00
Cameron Gutman
eb3d8ad92c
Update Windows and macOS to Qt 6.11.0
2026-04-08 20:54:36 -05:00
Cameron Gutman
07b00a6987
Update to WiX v7
2026-04-08 20:49:46 -05:00
Cameron Gutman
4ec682dc72
Remove errant assert to fix software decoding on Xe
2026-04-06 21:12:00 -05:00
Cameron Gutman
a9a1ea0a0b
Update AppImage dependencies
2026-04-06 20:04:05 -05:00
Cameron Gutman
c8d18f8a8e
Bring back DRM atomic test commit using new DRM master lock
...
The DRM master lock avoids race conditions between Qt taking master
to draw the GUI and the DRM renderer performing a test commit.
2026-04-06 19:25:03 -05:00
Cameron Gutman
9c11dca454
Move DRM master state cleanup into cleanupRenderContext()
2026-04-06 19:24:04 -05:00
Cameron Gutman
9496c25271
Add a lock to synchronize DRM master ownership between Qt and SDL
2026-04-04 14:47:57 -05:00
Cameron Gutman
6ff3309677
Don't warn about KMSDRM atomic on unsupported platforms
2026-04-04 14:24:35 -05:00
Cameron Gutman
e4c211b987
Automatically set SDL_KMSDRM_ATOMIC=0 on older SDL3 versions
...
Fixes #1824
2026-04-04 14:13:21 -05:00
Cameron Gutman
78bc2141f6
Fix getSdlFdEntryIndex() for FD 0
2026-04-02 21:20:33 -05:00
Cameron Gutman
effac744c7
Fix handling close(0) in our DRM master hooks
...
Prior to this fix, we would become out of sync and fail to promote
Qt and SDL FDs to master when required, causing Qt's mouse to
disappear and the SDL video subsystem to fail initialization when
trying to stream.
2026-04-02 21:01:46 -05:00
Cameron Gutman
5676a076fd
Fix overlay plane selection on drivers without zpos properties
2026-04-01 22:37:12 -05:00
Cameron Gutman
b6407492c7
Move refreshDisplay() after test window creation
...
SDL invalidates cached display modes after a window creation, so this avoids paying a second mode enumeration cost when the user enters the settings page.
2026-03-28 22:01:15 -05:00
Cameron Gutman
91ce7a41e5
Cache the result of SDL_GetNumDisplayModes()
...
It's not free when using SDL2-compat.
2026-03-28 21:57:51 -05:00
Cameron Gutman
89c8462e9e
Leave the video subsystem initialized on Windows
...
It significantly reduces settings page load latency.
2026-03-28 20:46:03 -05:00
Cameron Gutman
53a7680a38
Fix incorrect autoselection of SW AV1 over HW H.264 for SDR content
2026-03-28 20:19:11 -05:00
Cameron Gutman
88b4a17fe1
Use AV_CODEC_RECEIVE_FRAME_FLAG_SYNCHRONOUS for decoder probing on FFmpeg 8.1
2026-03-28 16:30:28 -05:00
Cameron Gutman
8326223220
Revert "Use EOS to force decoder test frame output"
...
It causes hangs on defective v4l2m2m decoders, and it's not always
well-supported by out-of-tree decoders either.
This reverts commit 66a30c66f3 .
2026-03-28 16:24:20 -05:00
Cameron Gutman
4aa5ad71c0
Use av_vk_get_optional_device_extensions() on FFmpeg 8.1
2026-03-28 16:17:59 -05:00
Cameron Gutman
e785be03c2
Add support for building with OpenSSL 4.0
2026-03-28 00:56:34 -05:00
Cameron Gutman
2e9fbecfea
Disable SDL3 raw keyboard/mouse hotplug support
2026-02-20 22:40:50 -06:00
Cameron Gutman
7c066485f3
Update SDL, sdl2-compat, and libplacebo for AppImage
2026-02-20 22:19:21 -06:00
Cameron Gutman
11d51e121a
Update libplacebo and SDL3
...
libplacebo -> v7.360.0
SDL3 -> 3.4.2
Fixes #1661
Fixes #1617
2026-02-20 21:57:46 -06:00
Cameron Gutman
09675bf56d
Update moonlight-common-c with vectorized FEC for non-ARMv8/x64 platforms
...
Also remove the workaround for Steam Link since vectorization is enabled by compiler flags now.
2026-02-19 20:09:38 -06:00
Cameron Gutman
8f994dd113
Enable NEON FEC optimizations on Steam Link
2026-02-19 00:54:49 -06:00
Cameron Gutman
e596c2dcdc
Update moonlight-common-c with SIMD acceleration for FEC
2026-02-19 00:38:52 -06:00
Cameron Gutman
209511b2dc
Revert Pinyin IME workaround which is ineffective on SDL3
...
The underlying SDL bug is now fixed upstream for SDL 3.4.2.
2026-02-16 15:00:30 -06:00