]> code.delx.au - pulseaudio/commitdiff
core: adjust volume only when there is actually a memory block
authorLennart Poettering <lennart@poettering.net>
Wed, 11 Nov 2009 03:18:10 +0000 (04:18 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 11 Nov 2009 03:18:10 +0000 (04:18 +0100)
Fixes an assert that is hit in somne niche cases:

https://bugzilla.redhat.com/show_bug.cgi?id=533482

src/pulsecore/sink-input.c

index 1af2823f91a06cfbf4651d036f60d07c9b46db45..aa84ccb1e566f43e64c146ab3a9316637776258a 100644 (file)
@@ -717,14 +717,15 @@ void pa_sink_input_peek(pa_sink_input *i, size_t slength /* in sink frames */, p
                 pa_memchunk rchunk;
                 pa_resampler_run(i->thread_info.resampler, &wchunk, &rchunk);
 
-                if (nvfs) {
-                    pa_memchunk_make_writable(&rchunk, 0);
-                    pa_volume_memchunk(&rchunk, &i->sink->sample_spec, &i->volume_factor_sink);
-                }
-
 /*                 pa_log_debug("pushing %lu", (unsigned long) rchunk.length); */
 
                 if (rchunk.memblock) {
+
+                    if (nvfs) {
+                        pa_memchunk_make_writable(&rchunk, 0);
+                        pa_volume_memchunk(&rchunk, &i->sink->sample_spec, &i->volume_factor_sink);
+                    }
+
                     pa_memblockq_push_align(i->thread_info.render_memblockq, &rchunk);
                     pa_memblock_unref(rchunk.memblock);
                 }