summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-07-13 00:09:59 +0000
committerLennart Poettering <lennart@poettering.net>2007-07-13 00:09:59 +0000
commit295e1c83aca1928cf4473d67a4a888aab472cf03 (patch)
treec77d8976ec5128a2bdfe9ad10ae85d2ee2a1a865 /src
parent0a095f6266e44df8b2ddf10fa0ee82159bcd65db (diff)
Make pa_sink_render_* and pa_source_post work only when in RUNNING state, to fix handling of monitor sources when their sink is suspended
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1509 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src')
-rw-r--r--src/pulsecore/sink.c4
-rw-r--r--src/pulsecore/source.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c
index d5ca061f..ced23a51 100644
--- a/src/pulsecore/sink.c
+++ b/src/pulsecore/sink.c
@@ -361,7 +361,7 @@ void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result) {
pa_sink_ref(s);
- n = fill_mix_info(s, info, MAX_MIX_CHANNELS);
+ n = s->thread_info.state == PA_SINK_RUNNING ? fill_mix_info(s, info, MAX_MIX_CHANNELS) : 0;
if (n == 0) {
@@ -426,7 +426,7 @@ void pa_sink_render_into(pa_sink*s, pa_memchunk *target) {
pa_sink_ref(s);
- n = fill_mix_info(s, info, MAX_MIX_CHANNELS);
+ n = s->thread_info.state == PA_SINK_RUNNING ? fill_mix_info(s, info, MAX_MIX_CHANNELS) : 0;
if (n == 0) {
pa_silence_memchunk(target, &s->sample_spec);
diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c
index f0a898f4..ce1ee987 100644
--- a/src/pulsecore/source.c
+++ b/src/pulsecore/source.c
@@ -232,6 +232,9 @@ void pa_source_post(pa_source*s, const pa_memchunk *chunk) {
pa_source_assert_ref(s);
pa_assert(chunk);
+ if (s->thread_info.state != PA_SOURCE_RUNNING)
+ return;
+
if (s->thread_info.soft_muted || !pa_cvolume_is_norm(&s->thread_info.soft_volume)) {
pa_memchunk vchunk = *chunk;