Commit Graph
100 Commits
Author SHA1 Message Date
Cameron Gutman d35532b03e Rerun lupdate 2026-06-28 16:51:34 -05:00
Cameron Gutman 1e0110b0f4 Fix broken translation format strings 2026-06-28 16:41:05 -05:00
Cameron Gutman e5353d9758 Remove some translations that contained typos or incorrect grammar 2026-06-28 16:37:32 -05:00
Cameron Gutman f7c660129b Merge remote-tracking branch 'origin/weblate' 2026-06-28 16:26:37 -05:00
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