Commit Graph

723 Commits

Author SHA1 Message Date
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