pub(crate) fn pa_playback_session_open(
inner: &Inner,
spec: &Spec,
device: Option<&str>,
attr: &BufferAttr,
) -> Result<PaPlaybackSession, SessionOpenError>Expand description
Open a playback session: mainloop + context + playback stream driven to Ready on the
bounded pump, honoring stop_pending at every turn. The mirror of
pa_capture_session_open.
Every failure is Transient: connect_playback resolves a sink name asynchronously,
so a wrong device name and a server that is still coming up are the same failed stream
state here, and the caller’s retry budget is what bounds either one.