source-output: Fix rewinding bug

Currently the rewind logic for the source output is broken if the output
does not implement a process_rewind() callback. In that case, the read
index of the delay memblockq is rewound. This is wrong, because the data
that is going to be re-written was not yet read. Instead the write index
should be rewound and the read index left untouched. This is the reason
for the rewind glitches of monitor sources.
This commit is contained in:
Georg Chini 2019-07-03 12:32:16 +02:00 committed by Arun Raghavan
parent f89d64b98e
commit 1240afabfa

View file

@ -866,7 +866,7 @@ void pa_source_output_process_rewind(pa_source_output *o, size_t nbytes /* in so
pa_resampler_rewind(o->thread_info.resampler, nbytes); pa_resampler_rewind(o->thread_info.resampler, nbytes);
} else } else
pa_memblockq_rewind(o->thread_info.delay_memblockq, nbytes); pa_memblockq_seek(o->thread_info.delay_memblockq, - ((int64_t) nbytes), PA_SEEK_RELATIVE, true);
} }
/* Called from thread context */ /* Called from thread context */