From 03a533770f897d393fb1fc130acfa75bed0fe7ba Mon Sep 17 00:00:00 2001 From: Demi Marie Obenour Date: Sat, 30 Sep 2023 23:35:44 -0400 Subject: [PATCH] Use the drained callback on the playback stream This may be more correct than using the "paused" event. --- pipewire/qubes-pw-module.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pipewire/qubes-pw-module.c b/pipewire/qubes-pw-module.c index 0aab8435..1eba2b54 100644 --- a/pipewire/qubes-pw-module.c +++ b/pipewire/qubes-pw-module.c @@ -557,7 +557,8 @@ static void stream_state_changed_common(void *d, enum pw_stream_state old, return; case PW_STREAM_STATE_PAUSED: pw_log_debug("%s paused", name); - set_stream_state(&impl->stream[playback ? PW_DIRECTION_INPUT : PW_DIRECTION_OUTPUT], false); + if (!playback) + set_stream_state(&impl->stream[playback ? PW_DIRECTION_INPUT : PW_DIRECTION_OUTPUT], false); break; case PW_STREAM_STATE_STREAMING: pw_log_debug("%s streaming", name); @@ -820,6 +821,12 @@ static void capture_stream_param_changed(void *data, uint32_t id, stream_param_changed(data, id, param, PW_DIRECTION_OUTPUT); } +static void playback_stream_drained(void *data) +{ + struct impl *impl = data; + set_stream_state(&impl->stream[PW_DIRECTION_INPUT], false); +} + static const struct pw_stream_events capture_stream_events = { .version = PW_VERSION_STREAM_EVENTS, .destroy = capture_stream_destroy, @@ -849,7 +856,7 @@ static const struct pw_stream_events playback_stream_events = { .add_buffer = NULL, .remove_buffer = NULL, .process = playback_stream_process, - .drained = NULL, + .drained = playback_stream_drained, }; static int create_stream(struct impl *impl, enum spa_direction direction)