summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_streamview.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-05-02 20:57:27 +0000
committerDavid Robillard <d@drobilla.net>2008-05-02 20:57:27 +0000
commitab2af5d185d0346ab1ef4e6f3e69138f3f708958 (patch)
tree09619ed21b8bef062805ee3138d8b39d9f276362 /gtk2_ardour/midi_streamview.cc
parente7e75e78c882766ccbe96acfd6f1286786365097 (diff)
Fix several crashes on MIDI recording.
Fix MIDI CC iterator infinite looping. Only allocate Text widget for MIDI events if necessary. git-svn-id: svn://localhost/ardour2/branches/3.0@3307 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_streamview.cc')
-rw-r--r--gtk2_ardour/midi_streamview.cc13
1 files changed, 7 insertions, 6 deletions
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc
index 1dd33820d9..de14f302e5 100644
--- a/gtk2_ardour/midi_streamview.cc
+++ b/gtk2_ardour/midi_streamview.cc
@@ -473,18 +473,19 @@ MidiStreamView::update_rec_regions (boost::shared_ptr<MidiModel> data, nframes_t
tmp = iter;
++tmp;
-
- if (!canvas_item_visible (rec_rects[n].rectangle)) {
- /* rect already hidden, this region is done */
+
+ boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion>(iter->first);
+ if (!region || !iter->second) {
iter = tmp;
continue;
}
- boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion>(iter->first);
- if (!region) {
+ if (!canvas_item_visible (rec_rects[n].rectangle)) {
+ /* rect already hidden, this region is done */
+ iter = tmp;
continue;
}
-
+
nframes_t origlen = region->length();
if (region == rec_regions.back().first && rec_active) {