summaryrefslogtreecommitdiff
path: root/libs/ardour/rt_midibuffer.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2019-10-17 15:19:05 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2019-11-02 16:32:18 -0600
commit5cd9c86d580d6419400e67f5890d583c606c8a10 (patch)
treea245b803e266d8a9204cbfaf386dd3e1f832cc08 /libs/ardour/rt_midibuffer.cc
parentc55e23e7aadca4ebe3b9ee8029abce939b4403ec (diff)
add RAII-style write protection while rendering MIDI playlist into RTMidiBuffer
Diffstat (limited to 'libs/ardour/rt_midibuffer.cc')
-rw-r--r--libs/ardour/rt_midibuffer.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/ardour/rt_midibuffer.cc b/libs/ardour/rt_midibuffer.cc
index 29ac4c6fb9..7c1b1f5330 100644
--- a/libs/ardour/rt_midibuffer.cc
+++ b/libs/ardour/rt_midibuffer.cc
@@ -167,11 +167,15 @@ item_timestamp_earlier (ARDOUR::RTMidiBuffer::Item const & item, samplepos_t tim
return item.timestamp < time;
}
-
-
uint32_t
RTMidiBuffer::read (MidiBuffer& dst, samplepos_t start, samplepos_t end, MidiStateTracker& tracker, samplecnt_t offset)
{
+ Glib::Threads::RWLock::ReaderLock lm (_lock, Glib::Threads::TRY_LOCK);
+
+ if (!lm.locked()) {
+ return 0;
+ }
+
Item* iend = _data+_size;
Item* item = lower_bound (_data, iend, start, item_timestamp_earlier);
uint32_t count = 0;