summaryrefslogtreecommitdiffstats
path: root/src/pulsecore/mcalign.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-06-11 12:08:37 +0000
committerLennart Poettering <lennart@poettering.net>2007-06-11 12:08:37 +0000
commit00da37f2c448096cdd54481b072db47b2f253141 (patch)
treecb6c51231fa498831b3e63660105ec00ea98d8f5 /src/pulsecore/mcalign.c
parent6aeec56708f4af2da0b83fdd65a0d153b9bed272 (diff)
Merge HUGE set of changes temporarily into a branch, to allow me to move them from one machine to another (lock-free and stuff)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1469 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/pulsecore/mcalign.c')
-rw-r--r--src/pulsecore/mcalign.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/pulsecore/mcalign.c b/src/pulsecore/mcalign.c
index dd1d71f3..97616437 100644
--- a/src/pulsecore/mcalign.c
+++ b/src/pulsecore/mcalign.c
@@ -91,6 +91,7 @@ void pa_mcalign_push(pa_mcalign *m, const pa_memchunk *c) {
} else {
size_t l;
+ void *lo_data, *m_data;
/* We have to copy */
assert(m->leftover.length < m->base);
@@ -102,10 +103,15 @@ void pa_mcalign_push(pa_mcalign *m, const pa_memchunk *c) {
/* Can we use the current block? */
pa_memchunk_make_writable(&m->leftover, m->base);
- memcpy((uint8_t*) m->leftover.memblock->data + m->leftover.index + m->leftover.length, (uint8_t*) c->memblock->data + c->index, l);
+ lo_data = pa_memblock_acquire(m->leftover.memblock);
+ m_data = pa_memblock_acquire(c->memblock);
+ memcpy((uint8_t*) lo_data + m->leftover.index + m->leftover.length, (uint8_t*) m_data + c->index, l);
+ pa_memblock_release(m->leftover.memblock);
+ pa_memblock_release(c->memblock);
m->leftover.length += l;
- assert(m->leftover.length <= m->base && m->leftover.length <= m->leftover.memblock->length);
+ assert(m->leftover.length <= m->base);
+ assert(m->leftover.length <= pa_memblock_get_length(m->leftover.memblock));
if (c->length > l) {
/* Save the remainder of the memory block */