summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/source.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-03-04 05:27:14 +0100
committerLennart Poettering <lennart@poettering.net>2009-03-04 05:32:19 +0100
commitecbc320a4c219b40795e0462de6f37d610003c88 (patch)
treea7176e6295e85f5cd982408888c6d2a001e6b327 /src/pulsecore/source.c
parentbffa8be8cd208fbc4d3cd44c34be47e9e47b086f (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.c18
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;