Attempt #46 to understand MIDI data locking.
authorCarl Hetherington <carl@carlh.net>
Mon, 23 May 2011 22:16:11 +0000 (22:16 +0000)
committerCarl Hetherington <carl@carlh.net>
Mon, 23 May 2011 22:16:11 +0000 (22:16 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9576 d708f5d6-7413-0410-9779-e7cbd77b26cf

doc/classes/make.sh [new file with mode: 0644]
doc/classes/midi.dot [new file with mode: 0644]

diff --git a/doc/classes/make.sh b/doc/classes/make.sh
new file mode 100644 (file)
index 0000000..d875677
--- /dev/null
@@ -0,0 +1 @@
+dot -Tsvg midi.dot > midi.svg
diff --git a/doc/classes/midi.dot b/doc/classes/midi.dot
new file mode 100644 (file)
index 0000000..b82a912
--- /dev/null
@@ -0,0 +1,41 @@
+digraph Ardour {
+       rankdir = BT
+       node [shape=box,arrowhead=normal,arrowtail=normal]
+
+       Evoral_Control [label=<
+Evoral::Control<br/>
+<font face="inconsolata" color="#0000ff">ControlList</font>
+>]
+       Evoral_ControlSet [label=<
+Evoral::ControlSet<br/>
+<font face="inconsolata" color="#ff0000">_control_lock</font><br/>
+<font face="inconsolata" color="#0000ff">map&lt;Parameter, Control&gt;</font>
+>]
+
+       Evoral_Sequence [label=<
+Evoral::Sequence<br/>
+<font face="inconsolata" color="#ff0000">_lock</font><br/>
+<font face="inconsolata" color="#aa0000">read_lock(): _lock</font><br/>
+<font face="inconsolata" color="#aa000">write_lock(): _lock, _control_lock</font><br/>
+<font face="inconsolata" color="#0000ff">Notes, Pitches, SysExes, PatchChanges</font>
+>]
+
+       Evoral_ControlList [label=<Evoral::ControlList<br/><font face="inconsolata" color="#ff0000">_lock</font>>]
+
+       ARDOUR_MidiModel [label=<
+ARDOUR::MidiModel<br/>
+<font face="inconsolata" color="#aa0000">edit_lock(): source mutex(), _lock, _control_lock</font><br/>
+<font face="inconsolata" color="#aa0000">write_lock(): _lock, _control_lock</font><br/>
+>]
+
+       "ARDOUR::Automatable" -> Evoral_ControlSet;
+       "ARDOUR::AutomatableSequence" -> "ARDOUR::Automatable";
+       "ARDOUR::AutomatableSequence" -> Evoral_Sequence;
+       Evoral_Sequence -> Evoral_ControlSet;
+       ARDOUR_MidiModel -> "ARDOUR::AutomatableSequence";
+
+       rank=same {Evoral_ControlSet; Evoral_Control; Evoral_ControlList}
+
+       Evoral_Control -> Evoral_ControlList [arrowhead=box];
+       Evoral_ControlSet -> Evoral_Control [arrowhead=box];
+}