summaryrefslogtreecommitdiff
path: root/libs/ardour
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
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')
-rw-r--r--libs/ardour/ardour/midi_model.h3
-rw-r--r--libs/ardour/midi_model.cc14
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)
{