diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-01 16:19:51 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2012-05-01 16:19:51 +0000 |
commit | ac46e5edb41810ee9e741419bd283297deec9b8a (patch) | |
tree | ec0380a534c104ea81a36b57bbfe8bf5b19692e5 /libs/ardour/midi_playlist.cc | |
parent | 77be4a2742b593e74e6b0ca79a6aa990bacf3233 (diff) |
remove recursive mutex from Playlist, replace with private regular mutex, force everyone to use Playlist::RegionLock to allow checking on lock handling if necessary; fix recursive use of lock in AudioPlaylist::read()
git-svn-id: svn://localhost/ardour2/branches/3.0@12131 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_playlist.cc')
-rw-r--r-- | libs/ardour/midi_playlist.cc | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/libs/ardour/midi_playlist.cc b/libs/ardour/midi_playlist.cc index 7e3d70bfe0..81b14dd933 100644 --- a/libs/ardour/midi_playlist.cc +++ b/libs/ardour/midi_playlist.cc @@ -107,11 +107,8 @@ MidiPlaylist::read (Evoral::EventSink<framepos_t>& dst, framepos_t start, framec its OK to block (for short intervals). */ -#ifdef HAVE_GLIB_THREADS_RECMUTEX - Glib::Threads::RecMutex::Lock rm (region_lock); -#else - Glib::RecMutex::Lock rm (region_lock); -#endif + Playlist::RegionLock rl (this, false); + DEBUG_TRACE (DEBUG::MidiPlaylistIO, string_compose ("++++++ %1 .. %2 +++++++ %3 trackers +++++++++++++++++\n", start, start + dur, _note_trackers.size())); @@ -298,11 +295,8 @@ MidiPlaylist::read (Evoral::EventSink<framepos_t>& dst, framepos_t start, framec void MidiPlaylist::clear_note_trackers () { -#ifdef HAVE_GLIB_THREADS_RECMUTEX - Glib::Threads::RecMutex::Lock rm (region_lock); -#else - Glib::RecMutex::Lock rm (region_lock); -#endif + Playlist::RegionLock rl (this, false); + for (NoteTrackers::iterator n = _note_trackers.begin(); n != _note_trackers.end(); ++n) { delete n->second; } @@ -407,12 +401,7 @@ MidiPlaylist::contained_automation() its OK to block (for short intervals). */ -#ifdef HAVE_GLIB_THREADS_RECMUTEX - Glib::Threads::RecMutex::Lock rm (region_lock); -#else - Glib::RecMutex::Lock rm (region_lock); -#endif - + Playlist::RegionLock rl (this, false); set<Evoral::Parameter> ret; for (RegionList::const_iterator r = regions.begin(); r != regions.end(); ++r) { |