Freebsd
為什麼PulseAudio需要係統dbus?
在這個單使用者 FreeBSD 桌面上,各種桌面組件使用使用者自己的
dbus
-instance 進行通信。然而,
pulseaudio
還嘗試與系統範圍dbus
(未啟用)通信,並且無法訪問它,向日誌發送垃圾郵件:Failed to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
如果我手動啟動
dbus
-service,pulseaudio
將記錄:... : [(null)] oss-util.c: '/dev/dsp0' doesn't support full duplex ... : [(null)] oss-util.c: '/dev/dsp1' doesn't support full duplex ... : [(null)] oss-util.c: '/dev/dsp2' doesn't support full duplex ... : [(null)] oss-util.c: '/dev/dsp3' doesn't support full duplex
然後閉嘴。為什麼它需要與系統範圍內的對話
dbus
?通過啟用系統範圍的服務,我將獲得什麼?
為什麼它需要與系統範圍的 dbus 通信?
它嘗試與系統範圍的 dbus 對話,以便將自己設置為高優先級和實時性。
看:
https://github.com/pulseaudio/pulseaudio/blob/v13.0/src/pulsecore/core-util.c#L706-L717
https://github.com/pulseaudio/pulseaudio/blob/v13.0/src/pulse/util.c#L406-L417
https://github.com/pulseaudio/pulseaudio/blob/v13.0/src/pulsecore/rtkit.c
通過啟用系統範圍的服務,我將獲得什麼?
FreeBSD 上什麼都沒有。據我所知,RealTimeKit 在 FreeBSD 上不可用。(儘管程式碼無論如何都試圖這樣做,但實際上並不存在這樣做的“需要”。)它的自述文件說 Linux 是必需的:
https://git.0pointer.net/rtkit.git/tree/README#n217
看起來如果它無法連接到 dbus,它會重試,但如果它連接到 dbus 並且無法設置優先級/實時,它會返回錯誤並且不會重試。