#include <algorithm>
#include <iostream>
+#include <utility>
#include <stdlib.h>
-#include "pbd/error.h"
-
#include "evoral/EventList.hpp"
-#include "ardour/configuration.h"
#include "ardour/debug.h"
#include "ardour/midi_model.h"
#include "ardour/midi_playlist.h"
#include "ardour/midi_region.h"
-#include "ardour/midi_ring_buffer.h"
-#include "ardour/session.h"
#include "ardour/types.h"
#include "i18n.h"
its OK to block (for short intervals).
*/
- Glib::RecMutex::Lock rm (region_lock);
+ Playlist::RegionReadLock rl (this);
+
DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("++++++ %1 .. %2 +++++++ %3 trackers +++++++++++++++++\n",
start, start + dur, _note_trackers.size()));
} else {
if (new_tracker) {
- pair<Region*,MidiStateTracker*> newpair;
- newpair.first = mr.get();
- newpair.second = tracker;
- _note_trackers.insert (newpair).first;
+ _note_trackers.insert (make_pair (mr.get(), tracker));
DEBUG_TRACE (DEBUG::MidiPlaylistIO, "\tadded tracker to trackers\n");
}
}
void
MidiPlaylist::clear_note_trackers ()
{
- Glib::RecMutex::Lock rm (region_lock);
+ Playlist::RegionWriteLock rl (this, false);
+
for (NoteTrackers::iterator n = _note_trackers.begin(); n != _note_trackers.end(); ++n) {
delete n->second;
}
bool changed = false;
{
- RegionLock rlock (this);
+ RegionWriteLock rlock (this);
RegionList::iterator i;
RegionList::iterator tmp;
its OK to block (for short intervals).
*/
- Glib::RecMutex::Lock rm (region_lock);
-
+ Playlist::RegionReadLock rl (this);
set<Evoral::Parameter> ret;
for (RegionList::const_iterator r = regions.begin(); r != regions.end(); ++r) {