Kishi
e39dfb80be
refactor(linux/xdgportal): Move elevated privilege check/drop to misc.cpp ( #5026 )
2026-04-20 13:05:42 -04:00
Andy Grundman
a5af790710
feat(nvenc): support for split frame encoding on GPUs with 2+ nvenc blocks ( #4892 )
...
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com >
2026-04-19 17:44:10 -04:00
neatnoise
e180053eab
fix(linux/vulkan): remove deprecated FFmpeg Vulkan queue lock/unlock ( #5031 )
2026-04-19 13:52:03 -04:00
Conn O'Griofa
44bf39be75
fix: Resolve minimum_fps_target related issues on all platforms ( #4967 )
2026-04-19 13:49:37 -04:00
David Lane
7228c2553c
fix(rtsp): ignore clientRefreshRateX100 if more than 1% variance from framerate ( #5027 )
...
Co-authored-by: Andy Grundman <105828+andygrundman@users.noreply.github.com >
2026-04-18 23:08:27 -04:00
Kishi
5ffa66ee52
refactor(linux/xdgportal): Split pipewire code into it's own file so it can be reused ( #5008 )
2026-04-17 16:16:19 -04:00
neatnoise
3210078310
fix(linux): auto-detect GPU with connected display for VAAPI and Vulkan ( #4961 )
2026-04-17 14:38:06 -04:00
neatnoise
a40f27f34e
fix(linux/vulkan): guard deprecated FFmpeg Vulkan queue lock/unlock ( #5005 )
2026-04-16 21:17:15 -04:00
Vincenzo Mitchell Barroso
225c3e9ee0
fix(linux/vulkan): encoder not working on NVIDIA GPUs ( #4994 )
2026-04-15 11:17:09 -04:00
neatnoise
75a3bedf5c
revert: "feat(linux/vulkan): enable RADV low-latency Vulkan Video encoding" ( #4989 )
2026-04-14 11:19:31 -04:00
neatnoise
43f973dbf2
feat(linux/vulkan): enable RADV low-latency Vulkan Video encoding ( #4984 )
2026-04-13 16:28:35 -04:00
Kishi
5a4170790b
fix(linux/xdgportal): Additional error handling and minor code improvements ( #4979 )
2026-04-13 10:32:28 -04:00
Kishi
4ea331e541
fix(linux/xdgportal): Improve multi-monitor support and work around breaking kmsgrab ( #4969 )
2026-04-10 18:32:23 -04:00
Kishi
d3330d1c8d
fix(linux/xdgportal): Properly support multiple screens by exposing pipewire streams as separate displays ( #4931 )
2026-04-09 13:11:20 -04:00
neatnoise
6c1612de65
fix(linux/vulkan): add 16-bit DRM format support for HDR DMA-BUF import ( #4962 )
2026-04-08 15:49:27 -04:00
Taimuraz Kaitmazov
a4c253f333
fix(linux): correct "Pulseadio" typo in PulseAudio log messages ( #4956 )
2026-04-08 15:06:31 -04:00
Conn O'Griofa
31b85802d0
fix: redact logging of sensitive config & CSRF validation ( #4955 )
2026-04-08 11:29:44 -04:00
neatnoise
0752f641b1
feat(linux): Add Vulkan video encoder ( #4603 )
2026-03-30 22:17:00 -04:00
neatnoise
d03334693c
feat(api/ui): add client enable/disable access control ( #4771 )
2026-03-29 12:58:00 -04:00
Glenn Hope
72faa710aa
fix: restore stdin-based pairing ( #4912 )
2026-03-28 22:21:22 -04:00
Conn O'Griofa
3e06afab1f
feat(linux): add thread priority support for POSIX systems ( #4885 )
2026-03-22 23:25:42 -04:00
aliefe04
d6bc76e3d4
fix: clear tray icon when unpairing the last paired client ( #4890 )
2026-03-22 19:10:28 -04:00
David Lane
24b66fedda
fix(csrf): make errors more apparent ( #4889 )
2026-03-22 12:39:37 -04:00
Conn O'Griofa
ae8adfd8ed
feat(linux/glad): implement EGL_IMG_context_priority ( #4857 )
2026-03-21 20:27:21 -04:00
Thomas Van Laere
0d3be0bb1e
feat(macOS): Capture audio on macOS using Tap API ( #4209 )
...
Co-authored-by: David Lane <42013603+ReenigneArcher@users.noreply.github.com >
2026-03-20 22:50:52 -04:00
Conn O'Griofa
a7ab814f74
fix(linux/xdgportal): portalgrab capture stability & mutter compatibility ( #4875 )
2026-03-20 20:59:44 -04:00
mia~
7a30ead471
feat(linux/keyboard): add F13-F24 keycodes ( #4833 )
2026-03-16 14:26:00 -04:00
Conn O'Griofa
253e624ee8
fix(linux/xdgportal): allow unified systemd service for all capture methods ( #4854 )
2026-03-16 14:25:30 -04:00
David Lane
ea201155f4
build(linux): generate glad sources at compile time ( #4798 )
...
Co-authored-by: Conn O'Griofa <connogriofa@gmail.com >
2026-03-15 21:21:41 -04:00
Conn O'Griofa
99d4e053bf
fix(linux/xdgportal): avoid duplicate frame insertion ( #4839 )
2026-03-14 13:43:17 -04:00
David Lane
e836354e5a
feat(web-ui): add browse feature to find directories/executables/files ( #4848 )
2026-03-13 22:55:04 -04:00
Conn O'Griofa
b3f0e2370c
fix(linux/xdgportal): descriptor/pointer cleanups ( #4840 )
2026-03-11 11:48:09 -04:00
Conn O'Griofa
60158b4712
feat(linux/xdgportal): implement event-driven capture ( #4768 )
2026-03-09 22:32:28 -04:00
David Lane
7e3cf7025d
build(deps): move nvapi to official NVIDIA repo and bump to R590 ( #3725 )
2026-03-08 22:04:09 -04:00
David Lane
f04f6a2bde
refactor(confighttp): HTML page handlers into generic getPage function ( #4645 )
2026-03-08 18:36:22 -04:00
Conn O'Griofa
daa99db662
fix(linux): use FQDN naming for all Linux packaging types ( #4779 )
...
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com >
2026-03-07 14:15:50 -05:00
Andy Grundman
76c3463d2c
fix(linux/wlgrab): add frame_timestamp using wayland's ready timestamp ( #4787 )
...
Co-authored-by: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com >
2026-03-07 10:19:03 -05:00
michalzxc
630c57ceb7
fix(linux/portal): set env_width/env_height so touch input works ( #4822 )
2026-03-06 18:34:27 -05:00
Andy Grundman
423a864ee3
feat(macos): build a signed .app bundle in a .dmg ( #4759 )
2026-03-03 23:30:53 -05:00
David Lane
5f8dab0988
fix: struct ordering broken in 188f1e2959 ( #4802 )
2026-03-02 08:38:23 -05:00
David Lane
188f1e2959
style(cpp): separate multiple variable declarations ( #4795 )
2026-03-01 09:02:17 -05:00
David Lane
2b7af2119d
refactor: replace macros with constexpr/consts ( #4791 )
2026-02-28 18:22:33 -05:00
Vladimir Solomatin
5395a9a515
fix(linux/xdgportal): don't pass external_only argument to eglQueryDmaBufModifiersEXT ( #4754 )
2026-02-26 15:00:18 -05:00
Conn O'Griofa
502be64682
fix(linux/kmsgrab): fix handle leak in update_cursor ( #4757 )
2026-02-22 15:56:35 -05:00
Conn O'Griofa
95da4b5c85
feat(linux/xdgportal): implement reactive capture with duplicate detection ( #4740 )
...
* feat(linux/xdgportal): implement reactive capture with duplicate detection
Replaces polling-based frame capture with event-driven approach using
condition variables for immediate notification when new frames arrive.
Changes:
- on_process: Notify snapshot() via condition variable on new buffer
- fill_img: Extract and pass through PipeWire seq/pts metadata
- snapshot: Block on condition variable with timeout; detect and skip
duplicate frames using seq/pts metadata to avoid redundant processing
- capture: Simplify catch-up logic to maintain timeline consistency
by advancing in delay intervals without resetting origin
This eliminates tight polling loops and reduces unnecessary frame
processing when compositor reuses buffers.
* feat(linux/xdgportal): optimize software path and fix modesetting crashes
This patch addresses a performance bottleneck in the software encoding
path and a race condition during PipeWire stream re-initialization.
1. Performance Optimization (Double-Buffering):
- Implemented a front/back buffer swapping strategy for the software
(MemPtr) path.
- Frame data is copied to a `back_buffer` without holding the
`frame_mutex`, then swapped with the `front_buffer` under a
short-lived lock.
- This prevents memory bandwidth contention and allows the encoder
and PipeWire threads to work in parallel without blocking.
2. Stability Fixes:
- Implemented `frame_mutex` protection across `on_process`, `fill_img`,
and `cleanup_stream` to prevent use-after-free and dangling pointers
during resolution changes.
- Enhanced `fill_img` to safely bail out if the stream is dead or
no new frame is ready.
- Added explicit state resets (`frame_ready = false`, `current_buffer = nullptr`)
to ensure the encoder thread ignores stale data during re-init.
Fixes intermittent segfaults during resolution changes and restores
performance on systems using software encoding.
* feat(linux/xdgportal): support x-nv-video[0].clientRefreshRateX100 for requesting fractional NTSC framerates
* fix(linux/xdgportal): improve dbus & pipewire teardown logic
* Close dbus proxy connection; fixes orphaned XDG notification icons after
mode changes or stream pauses via XDG icon interaction.
* Migrate shared pipewire destructor logic into cleanup_stream() to reduce
duplication.
---------
Co-authored-by: Andy Grundman <andy@hybridized.org >
2026-02-22 12:43:49 -05:00
dependabot[bot]
00a52bb933
build(deps): bump third-party/moonlight-common-c from 6250fa2 to b187204 ( #4751 )
...
* build(deps): bump third-party/moonlight-common-c
Bumps [third-party/moonlight-common-c](https://github.com/moonlight-stream/moonlight-common-c ) from `6250fa2` to `b187204`.
- [Commits](6250fa29ee...b187204769 )
---
updated-dependencies:
- dependency-name: third-party/moonlight-common-c
dependency-version: b187204769974b9af9d2a3c3bca83ad40e4f1ac9
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
* Add DATA_SHARDS_MAX definition
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cameron Gutman <aicommander@gmail.com >
2026-02-20 23:15:32 -05:00
herbie
c9bcee4480
fix(linux): fix touch misalignment for wlgrab on scaled outputs ( #4665 )
2026-02-17 23:40:16 -05:00
Conn O'Griofa
24c5dfd622
fix(linux/xdgportal): stream scaling and mode change support ( #4700 )
2026-02-15 17:42:11 -05:00
Andy Grundman
941f6453c1
feat(macos/tray): allow tray icon paths to be set at runtime from .app bundle ( #4711 )
2026-02-13 08:19:39 -05:00
Conn O'Griofa
638cd699d4
fix(linux/xdgportal): improve thread loop (un)locking & teardown logic ( #4705 )
2026-02-12 10:34:22 -05:00