summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_model.cc
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2012-10-11 03:22:17 +0000
committerHans Baier <hansfbaier@googlemail.com>2012-10-11 03:22:17 +0000
commit97c23848d7d4126dc948caac47476317d6752e4d (patch)
tree1c5eaa7d4d1041bab6bf9b97d9b4ee552c5e12d8 /libs/ardour/midi_model.cc
parent9707a0e8271a54dd21e49d6ca9ae98378ac4f8a5 (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/midi_model.cc')
-rw-r--r--libs/ardour/midi_model.cc14
1 files changed, 14 insertions, 0 deletions
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)
{