diff options
author | David Robillard <d@drobilla.net> | 2014-12-17 16:05:27 -0500 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2014-12-17 16:07:29 -0500 |
commit | a7067557107fc2f01586a88bb8b0a097914798ea (patch) | |
tree | c23f5f2e0386655c4d5e43ca714718e6bc1b76ac /gtk2_ardour/midi_streamview.cc | |
parent | 1fa9edd872bdbfe7651c822698235434ffe59540 (diff) |
Fix various MIDI locking issues.
Attempt to make mistakes much less likely in the future by statically requiring
caller to pass scoped locks where necessary.
Diffstat (limited to 'gtk2_ardour/midi_streamview.cc')
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index d124426cc9..8a5fd53150 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -193,7 +193,8 @@ MidiStreamView::display_region(MidiRegionView* region_view, bool load_model) } if (load_model) { - source->load_model(); + Glib::Threads::Mutex::Lock lm(source->mutex()); + source->load_model(lm); } if (!source->model()) { @@ -225,7 +226,8 @@ MidiStreamView::update_contents_metrics(boost::shared_ptr<Region> r) { boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(r); if (mr) { - mr->midi_source(0)->load_model(); + Glib::Threads::Mutex::Lock lm(mr->midi_source(0)->mutex()); + mr->midi_source(0)->load_model(lm); _range_dirty = update_data_note_range( mr->model()->lowest_note(), mr->model()->highest_note()); |