major fixes for MIDI patch change and note undo/redo. Patch change handling was compl...
[ardour.git] / libs / ardour / ardour / midi_model.h
index 38bd3ab982f26d1df57c90728e8a625472f11d6f..3ecfca7d1c94d59a257b72998d07da1e9213cbd9 100644 (file)
@@ -114,6 +114,8 @@ public:
                struct NoteChange {
                        NoteDiffCommand::Property property;
                        NotePtr note;
+                       uint32_t note_id; 
+                   
                        union {
                                uint8_t  old_value;
                                TimeType old_time;
@@ -152,6 +154,7 @@ public:
                int set_state (const XMLNode&, int version);
                XMLNode & get_state ();
 
+               void remove (SysExPtr sysex);
                void operator() ();
                void undo ();
 
@@ -160,6 +163,7 @@ public:
        private:
                struct Change {
                        boost::shared_ptr<Evoral::Event<TimeType> > sysex;
+                       gint sysex_id;
                        SysExDiffCommand::Property property;
                        TimeType old_time;
                        TimeType new_time;
@@ -168,6 +172,8 @@ public:
                typedef std::list<Change> ChangeList;
                ChangeList _changes;
 
+               std::list<SysExPtr> _removed;
+
                XMLNode & marshal_change (const Change &);
                Change unmarshal_change (XMLNode *);
        };
@@ -201,6 +207,7 @@ public:
                struct Change {
                        PatchChangePtr patch;
                        Property       property;
+                       gint           patch_id;
                        union {
                                TimeType   old_time;
                                uint8_t    old_channel;