diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2019-10-17 15:19:05 -0600 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2019-11-02 16:32:18 -0600 |
commit | 5cd9c86d580d6419400e67f5890d583c606c8a10 (patch) | |
tree | a245b803e266d8a9204cbfaf386dd3e1f832cc08 /libs/ardour/rt_midibuffer.cc | |
parent | c55e23e7aadca4ebe3b9ee8029abce939b4403ec (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.cc | 8 |
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; |