]> code.delx.au - pulseaudio/commit
rework memory block management to be thread-safe and mostly lock-free.
authorLennart Poettering <lennart@poettering.net>
Tue, 26 Sep 2006 23:50:56 +0000 (23:50 +0000)
committerLennart Poettering <lennart@poettering.net>
Tue, 26 Sep 2006 23:50:56 +0000 (23:50 +0000)
commitd210ebbb09daddb2c8c8e8e77243e088b0b19c4d
tree6ca5cc7add195f5a59778df4b0ff44f2881a0c12
parent5ad143b3aba3e5bd0d528feb3143dd9cd2f1e845
rework memory block management to be thread-safe and mostly lock-free.

pa_memblock is now an opaque structure. Access to its fields is now done
through various accessor functions in a thread-safe manner.

pa_memblock_acquire() and pa_memblock_release() are now used to access the
attached audio data. Why? To allow safe manipulation of the memory pointer
maintained by the memory block. Internally _acquire() and _release() maintain a
reference counter. Please do not confuse this reference counter whith the one
maintained by pa_memblock_ref()/_unref()!

As a side effect this patch removes all direct usages of AO_t and replaces it
with pa_atomic_xxx based code.

This stuff needs some serious testing love. Especially if threads are actively
used.

git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1404 fefdeb5f-60dc-0310-8127-8f9354f1896f
36 files changed:
src/Makefile.am
src/modules/module-alsa-sink.c
src/modules/module-alsa-source.c
src/modules/module-esound-sink.c
src/modules/module-jack-sink.c
src/modules/module-jack-source.c
src/modules/module-oss-mmap.c
src/modules/module-oss.c
src/modules/module-pipe-sink.c
src/modules/module-pipe-source.c
src/modules/module-sine.c
src/modules/rtp/rtp.c
src/pulse/internal.h
src/pulse/stream.c
src/pulsecore/cli-command.c
src/pulsecore/mcalign.c
src/pulsecore/memblock.c
src/pulsecore/memblock.h
src/pulsecore/memblockq.c
src/pulsecore/memchunk.c
src/pulsecore/play-memchunk.c
src/pulsecore/protocol-esound.c
src/pulsecore/protocol-native.c
src/pulsecore/protocol-simple.c
src/pulsecore/pstream.c
src/pulsecore/resampler.c
src/pulsecore/sample-util.c
src/pulsecore/sample-util.h
src/pulsecore/sink-input.c
src/pulsecore/sink.c
src/pulsecore/sound-file-stream.c
src/pulsecore/sound-file.c
src/tests/flist-test.c
src/tests/mcalign-test.c
src/tests/memblock-test.c
src/tests/memblockq-test.c