diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/automation_streamview.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/midi_region_view.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/midi_streamview.cc | 6 |
3 files changed, 8 insertions, 4 deletions
diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc index 89ae7fa079..e504d13931 100644 --- a/gtk2_ardour/automation_streamview.cc +++ b/gtk2_ardour/automation_streamview.cc @@ -76,7 +76,8 @@ AutomationStreamView::add_region_view_internal (boost::shared_ptr<Region> region if (wait_for_data) { boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(region); if (mr) { - mr->midi_source()->load_model(); + Source::Lock lock(mr->midi_source()->mutex()); + mr->midi_source()->load_model(lock); } } diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 0b14ca6a7a..e072d7c7ce 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -270,7 +270,8 @@ MidiRegionView::init (bool wfd) gui_context()); if (wfd) { - midi_region()->midi_source(0)->load_model(); + Glib::Threads::Mutex::Lock lm(midi_region()->midi_source(0)->mutex()); + midi_region()->midi_source(0)->load_model(lm); } _model = midi_region()->midi_source(0)->model(); 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()); |