diff options
Diffstat (limited to 'libs/ardour/midi_source.cc')
-rw-r--r-- | libs/ardour/midi_source.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libs/ardour/midi_source.cc b/libs/ardour/midi_source.cc index 7b2c4009bb..aa93729d37 100644 --- a/libs/ardour/midi_source.cc +++ b/libs/ardour/midi_source.cc @@ -49,7 +49,7 @@ sigc::signal<void,MidiSource *> MidiSource::MidiSourceCreated; MidiSource::MidiSource (Session& s, string name) : Source (s, name, DataType::MIDI) , _timeline_position(0) - , _model(new MidiModel(*this)) + , _model(new MidiModel(this)) , _writing (false) { _read_data_count = 0; @@ -59,7 +59,7 @@ MidiSource::MidiSource (Session& s, string name) MidiSource::MidiSource (Session& s, const XMLNode& node) : Source (s, node) , _timeline_position(0) - , _model(new MidiModel(*this)) + , _model(new MidiModel(this)) , _writing (false) { _read_data_count = 0; @@ -192,12 +192,13 @@ MidiSource::session_saved() newsrc->set_timeline_position(_timeline_position); _model->write_to(newsrc); + // cyclic dependency here, ugly :( newsrc->set_model(_model); - _model.reset(); + _model->set_midi_source(newsrc.get()); newsrc->flush_header(); newsrc->flush_footer(); - + Switched.emit(newsrc); } } |