From 6c19e1c7eab9804c5b522f0e571abae82ac14c65 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 20 Jun 2010 01:33:16 +0000 Subject: [PATCH] Invalidate old sources before forgetting about them. I think this prevents the possibility of an old source keeping a lock on the MidiModel via its iterator. May fix #3249. git-svn-id: svn://localhost/ardour2/branches/3.0@7280 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/midi_model.h | 2 +- libs/ardour/midi_model.cc | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 5d1d605c95..9b2c66d5f0 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -140,7 +140,7 @@ public: PBD::Signal0 ContentsChanged; const MidiSource* midi_source() const { return _midi_source; } - void set_midi_source(MidiSource* source) { _midi_source = source; } + void set_midi_source (MidiSource *); boost::shared_ptr > find_note (NotePtr); diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index bdf0516dea..566bf9d9a3 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -1125,7 +1125,9 @@ MidiModel::insert_merge_policy () const } } - - - - +void +MidiModel::set_midi_source (MidiSource* s) +{ + _midi_source->invalidate (); + _midi_source = s; +}