diff options
author | Lennart Poettering <lennart@poettering.net> | 2007-07-13 00:09:59 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2007-07-13 00:09:59 +0000 |
commit | 295e1c83aca1928cf4473d67a4a888aab472cf03 (patch) | |
tree | c77d8976ec5128a2bdfe9ad10ae85d2ee2a1a865 /src | |
parent | 0a095f6266e44df8b2ddf10fa0ee82159bcd65db (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.c | 4 | ||||
-rw-r--r-- | src/pulsecore/source.c | 3 |
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; |