systemd: Depend on dbus.service

Solution suggested by Xi Ruoyao.

The dbus user service is required for various features - the summary says:
'dbus (Bluetooth, rt, portal, pw-reserve)'

On session logout the dbus service gets shut down while the Pipewire one
relies on a timeout. If a user logs in again before PW timed out, the
later stays alive but doesn't handle re-connecting to the dbus service
of the new session, breaking the camera portal and potentially other
features.

Thus hard-depend on the dbus service (if enabled at build time) and thus
shut down together with it.

(cherry picked from commit 2625983a23)
This commit is contained in:
Robert Mader 2025-03-19 08:25:34 +01:00
parent f19fd8a735
commit 934f6c7d1b
2 changed files with 7 additions and 1 deletions

View file

@ -11,6 +11,12 @@ systemd_config = configuration_data()
systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire')
systemd_config.set('PW_PULSE_BINARY', pipewire_bindir / 'pipewire-pulse')
pw_service_reqs = ''
if get_option('dbus').enabled()
pw_service_reqs += 'dbus.service '
endif
systemd_config.set('PW_SERVICE_REQS', pw_service_reqs)
configure_file(input : 'pipewire.service.in',
output : 'pipewire.service',
configuration : systemd_config,

View file

@ -13,7 +13,7 @@ Description=PipeWire Multimedia Service
#
# After=pipewire.socket is not needed, as it is already implicit in the
# socket-service relationship, see systemd.socket(5).
Requires=pipewire.socket
Requires=pipewire.socket @PW_SERVICE_REQS@
ConditionUser=!root
[Service]