summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-04-20 19:40:30 +0000
committerLennart Poettering <lennart@poettering.net>2008-04-20 19:40:30 +0000
commit4b1d684d261c52ad6ed83f1d8efdaff7105ba324 (patch)
tree8474947c32e1b44893a3ea5206a0120f4056219d
parent144b237d863030819bd9309148a1a264e31a4628 (diff)
add new API function pa_memchunk_memcpy()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2271 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/pulsecore/memchunk.c20
-rw-r--r--src/pulsecore/memchunk.h3
2 files changed, 23 insertions, 0 deletions
diff --git a/src/pulsecore/memchunk.c b/src/pulsecore/memchunk.c
index 4e73b636..16a9c140 100644
--- a/src/pulsecore/memchunk.c
+++ b/src/pulsecore/memchunk.c
@@ -90,3 +90,23 @@ pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c) {
return (pa_memchunk*) c;
}
+
+pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src) {
+ void *p, *q;
+
+ pa_assert(dst);
+ pa_assert(src);
+ pa_assert(dst->length == src->length);
+
+ p = pa_memblock_acquire(dst->memblock);
+ q = pa_memblock_acquire(src->memblock);
+
+ memmove((uint8_t*) p + dst->index,
+ (uint8_t*) q + src->index,
+ dst->length);
+
+ pa_memblock_release(dst->memblock);
+ pa_memblock_release(src->memblock);
+
+ return dst;
+}
diff --git a/src/pulsecore/memchunk.h b/src/pulsecore/memchunk.h
index e6105ace..46a82406 100644
--- a/src/pulsecore/memchunk.h
+++ b/src/pulsecore/memchunk.h
@@ -49,4 +49,7 @@ pa_memchunk* pa_memchunk_reset(pa_memchunk *c);
/* Map a memory chunk back into memory if it was swapped out */
pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c);
+/* Copy the data in the src memchunk to the dst memchunk */
+pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src);
+
#endif