pipewire/spa/plugins
Hans de Goede c5da2e30dc spa: v4l2: Use systemd-logind to listen for access changes
There is a race between logind applying ACLs to allow the active session
of a locally present user access to devices with a udev uaccess tag
(like /dev/video# nodes) getting applied vs wireplumber/pipewire starting.

Wireplumber/pipewire are part of the (user) default.target, which gets
started as soon as a user logs in and systemd --user is started for that
user, where as logind only starts applying the ACLs after the gnome-shell
associated logind session has been created.

This race may cause pipewire to not see v4l2 video sources at login,
this can be reproduced with these steps:

1. sudo setfacl --remove-all /dev/video*
2. systemctl --user restart pipewire
3. Now wp-ctl status will not show any video devices
   (like if pipewire was started before the udev uaccess ACLs got applied)
4. Do a switch to another (test) user without logging out, e.g. in GNOME
   go to the top right system menu press the power on/off icon and select
   "Switch User..."
5. Switch back to your normal user. Run getfacl /dev/video0 this will show
   your user has access now.
6. wp-ctl status should show the camera now, but it does not.

Fix pipewire not seeing v4l2 sources in this case by making v4l2-udev
monitor systemd-logind session changes and redoing the access() checks
on /dev/video# nodes when the session changes.

Closes: #3539
Closes: #3960
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
(cherry picked from commit 2a6ba61264)
2024-10-12 15:19:49 +02:00
..
aec aec: support both webrtc versions 2023-09-14 15:35:40 +02:00
alsa spa: alsa: react to "new" udev action as well 2024-10-12 15:19:49 +02:00
audioconvert audioadapter: recheck formats when EnumFormat changes 2024-09-17 11:18:43 +02:00
audiomixer audioconvert: avoid unaligned writes and left shift of neagtives 2023-10-15 21:12:23 +02:00
audiotestsrc node: update the duration/rate from the target 2023-03-23 18:39:27 +01:00
avb spa: small cleanups 2024-01-12 12:14:06 +01:00
bluez5 bluez5: backend-native: Handle AT+CCWA command 2024-09-17 11:35:54 +02:00
control tweak number of buffers 2023-10-13 14:00:29 +02:00
ffmpeg treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
jack tweak number of buffers 2023-10-13 14:00:29 +02:00
libcamera meson: fix build with missing libudev-devel 2024-10-12 15:19:49 +02:00
support journal: prepend code location to messages at debug log levels 2024-04-29 16:30:06 +02:00
test spa: deduplicate test-helper.h 2023-10-15 16:20:17 +00:00
v4l2 spa: v4l2: Use systemd-logind to listen for access changes 2024-10-12 15:19:49 +02:00
videoconvert spa: remove unnecessary indirection for some spa_log_topics 2023-10-06 13:08:24 +00:00
videotestsrc videotestsrc: implement impl_node_set_io to fix segfault while loading 2023-10-26 15:54:10 +02:00
volume volume: Fix inverted check for buffer validity 2023-03-31 08:19:07 +00:00
vulkan vulkan: fix uninitialized writeDescriptor 2023-08-31 10:08:06 +00:00
meson.build meson: fix build with missing libudev-devel 2024-10-12 15:19:49 +02:00