diff options
author | Hans Baier <hansfbaier@googlemail.com> | 2012-10-11 03:22:17 +0000 |
---|---|---|
committer | Hans Baier <hansfbaier@googlemail.com> | 2012-10-11 03:22:17 +0000 |
commit | 97c23848d7d4126dc948caac47476317d6752e4d (patch) | |
tree | 1c5eaa7d4d1041bab6bf9b97d9b4ee552c5e12d8 /libs/ardour | |
parent | 9707a0e8271a54dd21e49d6ca9ae98378ac4f8a5 (diff) |
implement deleting of sysex events
git-svn-id: svn://localhost/ardour2/branches/3.0@13238 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/midi_model.h | 3 | ||||
-rw-r--r-- | libs/ardour/midi_model.cc | 14 |
2 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 38bd3ab982..0d11f940b9 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -152,6 +152,7 @@ public: int set_state (const XMLNode&, int version); XMLNode & get_state (); + void remove (SysExPtr sysex); void operator() (); void undo (); @@ -168,6 +169,8 @@ public: typedef std::list<Change> ChangeList; ChangeList _changes; + std::list<SysExPtr> _removed; + XMLNode & marshal_change (const Change &); Change unmarshal_change (XMLNode *); }; diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index e86b229c71..4c6f6633d5 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -786,6 +786,10 @@ MidiModel::SysExDiffCommand::operator() () { MidiModel::WriteLock lock (_model->edit_lock ()); + for (list<SysExPtr>::iterator i = _removed.begin(); i != _removed.end(); ++i) { + _model->remove_sysex_unlocked (*i); + } + for (ChangeList::iterator i = _changes.begin(); i != _changes.end(); ++i) { switch (i->property) { case Time: @@ -803,6 +807,10 @@ MidiModel::SysExDiffCommand::undo () { MidiModel::WriteLock lock (_model->edit_lock ()); + for (list<SysExPtr>::iterator i = _removed.begin(); i != _removed.end(); ++i) { + _model->add_sysex_unlocked (*i); + } + for (ChangeList::iterator i = _changes.begin(); i != _changes.end(); ++i) { switch (i->property) { case Time: @@ -816,6 +824,12 @@ MidiModel::SysExDiffCommand::undo () _model->ContentsChanged(); /* EMIT SIGNAL */ } +void +MidiModel::SysExDiffCommand::remove (SysExPtr sysex) +{ + _removed.push_back(sysex); +} + XMLNode& MidiModel::SysExDiffCommand::marshal_change (const Change& change) { |