diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-03-04 05:27:14 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-03-04 05:32:19 +0100 |
commit | ecbc320a4c219b40795e0462de6f37d610003c88 (patch) | |
tree | a7176e6295e85f5cd982408888c6d2a001e6b327 /src/pulsecore/source.c | |
parent | bffa8be8cd208fbc4d3cd44c34be47e9e47b086f (diff) |
make suspend state of monitor source follow the suspend state of the sink it belongs to
Diffstat (limited to 'src/pulsecore/source.c')
-rw-r--r-- | src/pulsecore/source.c | 18 |
1 files changed, 18 insertions, 0 deletions
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 @@ -434,6 +434,24 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend) { } /* 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; pa_source_output *o, *n; |