summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;