summaryrefslogtreecommitdiffstats
path: root/src/modules/module-ladspa-sink.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-08-07 23:58:45 +0200
committerLennart Poettering <lennart@poettering.net>2009-08-07 23:58:45 +0200
commit7d4916379bbf05384ad199004949cc220822aa5f (patch)
treeee2a106d411a9f6039d917041f2dbc45f34b8014 /src/modules/module-ladspa-sink.c
parent51b3899348bf29dd88b56691aeea9f57895dfd14 (diff)
ladspa/remap: make sure we process all requested rewinds unconditionally
In some situations a rewind request travelling downstream might be optimized away on its way and an upstream rewind processing might never come back. Hence, call _process_rewind() before each _render()just to make sure we processed them all.
Diffstat (limited to 'src/modules/module-ladspa-sink.c')
-rw-r--r--src/modules/module-ladspa-sink.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/modules/module-ladspa-sink.c b/src/modules/module-ladspa-sink.c
index 21f4a8f1..b26330c8 100644
--- a/src/modules/module-ladspa-sink.c
+++ b/src/modules/module-ladspa-sink.c
@@ -178,6 +178,9 @@ static int sink_input_pop_cb(pa_sink_input *i, size_t nbytes, pa_memchunk *chunk
if (!u->sink || !PA_SINK_IS_OPENED(u->sink->thread_info.state))
return -1;
+ /* Hmm, process any rewind request that might be queued up */
+ pa_sink_process_rewind(u->sink, 0);
+
while (pa_memblockq_peek(u->memblockq, &tchunk) < 0) {
pa_memchunk nchunk;