summaryrefslogtreecommitdiff
path: root/gtk2_ardour/automation_streamview.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-02-15 20:31:05 +0000
committerDavid Robillard <d@drobilla.net>2009-02-15 20:31:05 +0000
commit59972b5550b0dbfb738a1acfd46c5764f96a3da5 (patch)
treea33e3212899947c83b5f59d6c5e549e923d0f914 /gtk2_ardour/automation_streamview.cc
parent9c89a93e4f96826bec6ed519f8f435e4fc73bfa5 (diff)
Factor out region layering.
Correctly layer automation regions to match the stacking of their 'real' counterparts. git-svn-id: svn://localhost/ardour2/branches/3.0@4585 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/automation_streamview.cc')
-rw-r--r--gtk2_ardour/automation_streamview.cc27
1 files changed, 6 insertions, 21 deletions
diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc
index e7ab760709..2769ab846d 100644
--- a/gtk2_ardour/automation_streamview.cc
+++ b/gtk2_ardour/automation_streamview.cc
@@ -158,35 +158,20 @@ AutomationStreamView::redisplay_diskstream ()
{
list<RegionView *>::iterator i, tmp;
+ // Flag region views as invalid and disable drawing
for (i = region_views.begin(); i != region_views.end(); ++i) {
(*i)->set_valid (false);
+ (*i)->enable_display(false);
}
-
+
+ // Add and display region views, and flag them as valid
if (_trackview.is_track()) {
_trackview.get_diskstream()->playlist()->foreach_region (
static_cast<StreamView*>(this), &StreamView::add_region_view);
}
-
- for (i = region_views.begin(); i != region_views.end(); ) {
- tmp = i;
- tmp++;
-
- if (!(*i)->is_valid()) {
- delete *i;
- region_views.erase (i);
- } else {
- (*i)->enable_display(true);
- (*i)->set_height(height);
- }
-
- i = tmp;
- }
- /* now fix layering */
-
- for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
- region_layered (*i);
- }
+ // Stack regions by layer, and remove invalid regions
+ layer_regions();
}