]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/sound-file-stream.c
Merge HUGE set of changes temporarily into a branch, to allow me to move them from...
[pulseaudio] / src / pulsecore / sound-file-stream.c
index 7a43c74331d3fcd07fb94a759bbf20bbeee5050e..a682ee6c381463d224850463a17b1429d8a9ccdd 100644 (file)
@@ -76,21 +76,25 @@ static int sink_input_peek(pa_sink_input *i, pa_memchunk *chunk) {
     if (!u->memchunk.memblock) {
         uint32_t fs = pa_frame_size(&i->sample_spec);
         sf_count_t n;
+        void *p;
 
         u->memchunk.memblock = pa_memblock_new(i->sink->core->mempool, BUF_SIZE);
         u->memchunk.index = 0;
 
+        p = pa_memblock_acquire(u->memchunk.memblock);
+
         if (u->readf_function) {
-            if ((n = u->readf_function(u->sndfile, u->memchunk.memblock->data, BUF_SIZE/fs)) <= 0)
+            if ((n = u->readf_function(u->sndfile, p, BUF_SIZE/fs)) <= 0)
                 n = 0;
 
             u->memchunk.length = n * fs;
         } else {
-            if ((n = sf_read_raw(u->sndfile, u->memchunk.memblock->data, BUF_SIZE)) <= 0)
+            if ((n = sf_read_raw(u->sndfile, p, BUF_SIZE)) <= 0)
                 n = 0;
 
             u->memchunk.length = n;
         }
+        pa_memblock_release(u->memchunk.memblock);
 
         if (!u->memchunk.length) {
             free_userdata(u);