summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_source.cc
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-04-11 15:49:52 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-04-11 15:49:52 +0000
commitaae8262a363b3d7b85b5baa3b2d0ffb07e604b73 (patch)
treef482717d2f895f3d9fb3b3f7faa5a4648c3b58d0 /libs/ardour/midi_source.cc
parentcb413146428ce5db5e281d70f2b3b7df27c1aaab (diff)
* persistent undo for MIDI edits works now
* fixed bug: dragging of notes beyond left region bounds made it disappear (unsigned int wrap around) git-svn-id: svn://localhost/ardour2/branches/3.0@3249 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_source.cc')
-rw-r--r--libs/ardour/midi_source.cc9
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);
}
}