From ecbc320a4c219b40795e0462de6f37d610003c88 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 4 Mar 2009 05:27:14 +0100 Subject: make suspend state of monitor source follow the suspend state of the sink it belongs to --- src/pulsecore/source.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/pulsecore/source.c') diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index f946366d..476cb553 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -433,6 +433,24 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend) { return source_set_state(s, pa_source_used_by(s) ? PA_SOURCE_RUNNING : PA_SOURCE_IDLE); } +/* Called from main context */ +int pa_source_sync_suspend(pa_source *s) { + pa_sink_state_t state; + + pa_source_assert_ref(s); + pa_assert(PA_SOURCE_IS_LINKED(s->state)); + pa_assert(s->monitor_of); + + state = pa_sink_get_state(s->monitor_of); + + if (state == PA_SINK_SUSPENDED) + return source_set_state(s, PA_SOURCE_SUSPENDED); + + pa_assert(PA_SINK_IS_OPENED(state)); + + return source_set_state(s, pa_source_used_by(s) ? PA_SOURCE_RUNNING : PA_SOURCE_IDLE); +} + /* Called from main context */ pa_queue *pa_source_move_all_start(pa_source *s) { pa_queue *q; -- cgit