-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
fix(xdg-portal): add support for cursor_mode #4620
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: feat/linux/add-xdg-portal-grab
Are you sure you want to change the base?
fix(xdg-portal): add support for cursor_mode #4620
Conversation
This is not present in the glad version imported in Sunshine, plug the holes so that these functions may be used.
Add a new portal "grab" implementation that will request the necessary permissions over XDG portals and use Pipewire for video data streaming. This supports DMA-Buf buffer exchange for hardware accelerated encoding (VAAPI, nvenc), software encoding will only work with memory buffers.
Require GIO and PIPEWIRE packages for portal support and use SYSTEM include directories. Also, clarify the fatal error message order for missing dependencies.
Pipewire has been added to the dependency lists for FreeBSD, Arch, Fedora, Homebrew, and Debian-based packaging and build scripts. This ensures proper support and integration for systems using Pipewire.
A value of 2 indicates "Remember this Selection". Co-authored-by: Carson Katri <[email protected]>
…ystems (#4510) Co-authored-by: Carlos Garnacho <[email protected]> Co-authored-by: Carson Katri <[email protected]> Co-authored-by: d.bondarev <[email protected]>
Corrects the installation path for sunshine-kms to use %{buildroot}%{_bindir} instead of %{_bindir}, ensuring proper packaging for RPM builds.
Replaced raw arrays with std::array for type safety and clarity in buffer and struct allocations throughout portalgrab.cpp. Updated related code to use .data() and .size() where appropriate, improving maintainability and reducing potential for errors.
Changed C-style string constants to array declarations for REQUEST_PREFIX and SESSION_PREFIX. Updated function calls to use std::array::data() for params. Split spa_pod_frame variable declarations for clarity.
Updated path string construction in portalgrab.cpp to use std::format instead of g_strdup_printf, improving type safety and readability.
Applied minor refactoring for improved code clarity and consistency: added [[maybe_unused]] to unused parameters, replaced C-style casts with static_cast, removed unnecessary semicolon, and simplified std::fill_n usage.
Refactored parameter assignment to avoid post-increment in array indexing and improve clarity. Updated token check to use direct character comparison. Replaced enum class usage with 'using enum' for mem_type_e. Improved logging for unrecognized capture status by using std::to_underlying.
Updated function parameters and local variables to use const qualifiers where appropriate. Replaced C-style casts with C++ static_cast for improved type safety and clarity. Minor code cleanups and style improvements.
Added the -DSUNSHINE_ENABLE_PORTAL=ON flag to FreeBSD CI, COPR spec, Flatpak, and linux_build.sh scripts to ensure the portal feature is enabled across all build targets. Also reordered some CMake flags for consistency.
a72c887 to
dcc11f7
Compare
dcc11f7 to
dd56d99
Compare
|
Bundle ReportBundle size has no change ✅ |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## feat/linux/add-xdg-portal-grab #4620 +/- ##
==================================================================
+ Coverage 15.13% 16.05% +0.92%
==================================================================
Files 95 72 -23
Lines 19708 14571 -5137
Branches 9067 6925 -2142
==================================================================
- Hits 2982 2340 -642
+ Misses 13221 11339 -1882
+ Partials 3505 892 -2613
Flags with carried forward coverage won't be shown. Click here to find out more.
|
4821198 to
a10aed4
Compare




Description
This PR adds support for
cursor_modein XDG portal grab capture.Note: This is fully AI generated.
Screenshot
Issues Fixed or Closed
Roadmap Issues
Type of Change
Checklist
AI Usage