From eb86971d2d1a9c0b81f8f7ca2b87aa744be54976 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 6 Dec 2014 18:04:30 -0500 Subject: Invalidate iterator whenever model changes. I suspect this is an underlying cause of several tricky to reproduce bugs, but we'll have to wait around and see... --- libs/ardour/midi_source.cc | 2 ++ libs/ardour/smf_source.cc | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc index f787d49168..adf28cff09 100644 --- a/libs/ardour/midi_source.cc +++ b/libs/ardour/midi_source.cc @@ -397,6 +397,7 @@ void MidiSource::drop_model () { _model.reset(); + invalidate(); ModelChanged (); /* EMIT SIGNAL */ } @@ -404,6 +405,7 @@ void MidiSource::set_model (boost::shared_ptr m) { _model = m; + invalidate(); ModelChanged (); /* EMIT SIGNAL */ } diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index 72f03ba351..e4cfede179 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -613,6 +613,8 @@ SMFSource::load_model (bool lock, bool force_reload) _model->clear(); } + invalidate(); + if (writable() && !_open) { return; } @@ -712,6 +714,7 @@ SMFSource::destroy_model () { //cerr << _name << " destroying model " << _model.get() << endl; _model.reset(); + invalidate(); } void @@ -753,6 +756,7 @@ SMFSource::ensure_disk_file () _model.reset (); mm->sync_to_source (); _model = mm; + invalidate(); } else { /* No model; if it's not already open, it's an empty source, so create and open it for writing. -- cgit v1.2.3