summaryrefslogtreecommitdiff
path: root/libs/ardour/base_audio_port.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-10-31 20:05:49 +0000
committerDavid Robillard <d@drobilla.net>2007-10-31 20:05:49 +0000
commit0051f92a4cc12e942c4330be63b262a085dd814b (patch)
tree31ce6eda91eec766a9e43332b55e81eac5f83fea /libs/ardour/base_audio_port.cc
parent1059b3f48e568b60d5e248d94fbb9110a2dd1a16 (diff)
Truly atomic port mixdown function setting.
git-svn-id: svn://localhost/ardour2/trunk@2581 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/base_audio_port.cc')
-rw-r--r--libs/ardour/base_audio_port.cc7
1 files changed, 2 insertions, 5 deletions
diff --git a/libs/ardour/base_audio_port.cc b/libs/ardour/base_audio_port.cc
index 379e69c8e0..ceec4c1d3a 100644
--- a/libs/ardour/base_audio_port.cc
+++ b/libs/ardour/base_audio_port.cc
@@ -17,6 +17,7 @@
*/
#include <cassert>
+#include <glib.h>
#include <ardour/base_audio_port.h>
#include <ardour/audioengine.h>
#include <ardour/data_type.h>
@@ -75,11 +76,7 @@ BaseAudioPort::default_mixdown (const set<Port*>& ports, AudioBuffer* dest, nfra
void
BaseAudioPort::set_mixdown_function (void (*func)(const set<Port*>&, AudioBuffer*, nframes_t, nframes_t, bool))
{
- /* caller should (but not must) hold process lock since this is an atomic operation on most platforms
- and even if its not, it doesn't really matter.
- */
-
- _mixdown = func;
+ g_atomic_pointer_set(&_mixdown, func);
}