summaryrefslogtreecommitdiff
path: root/gtk2_ardour/region_view.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2016-07-10 02:11:36 +1000
committernick_m <mainsbridge@gmail.com>2016-07-10 02:18:38 +1000
commit0e2ed90cfcfc0062f6b3cbd9feb36b3a0beef4f4 (patch)
tree5990e5ffd72b1b4a3a0ce0f575b56cb41a8e0306 /gtk2_ardour/region_view.cc
parent23da9acf7ea39d34b9393e38c06a6d80202f80f8 (diff)
Revert incorrect 'optimisation' from 4f7a4cd2333.
- fixes regression in stacked layering display.
Diffstat (limited to 'gtk2_ardour/region_view.cc')
-rw-r--r--gtk2_ardour/region_view.cc47
1 files changed, 31 insertions, 16 deletions
diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc
index 4f904d9f2b..16bf44a689 100644
--- a/gtk2_ardour/region_view.cc
+++ b/gtk2_ardour/region_view.cc
@@ -775,27 +775,42 @@ RegionView::update_coverage_frames (LayerDisplay d)
/* the color that will be used to show parts of regions that will not be heard */
uint32_t const non_playing_color = UIConfiguration::instance().color_mod ("covered region", "covered region base");
- t = pl->find_next_region_boundary (t, 1);
- /* is this region is on top at time t? */
- bool const new_me = (pl->top_unmuted_region_at (t) == _region);
+ while (t < end) {
- /* start off any new rect, if required */
- if (cr == 0 || me != new_me) {
- cr = new ArdourCanvas::Rectangle (group);
- _coverage_frames.push_back (cr);
- cr->set_x0 (trackview.editor().sample_to_pixel (t - position));
- cr->set_y0 (1);
- cr->set_y1 (_height + 1);
- cr->set_outline (false);
- cr->set_ignore_events (true);
- if (new_me) {
- cr->set_fill_color (UINT_RGBA_CHANGE_A (non_playing_color, 0));
- } else {
- cr->set_fill_color (non_playing_color);
+ t++;
+
+ /* is this region is on top at time t? */
+ bool const new_me = (pl->top_unmuted_region_at (t) == _region);
+ /* finish off any old rect, if required */
+ if (cr && me != new_me) {
+ cr->set_x1 (trackview.editor().sample_to_pixel (t - position));
}
+
+ /* start off any new rect, if required */
+ if (cr == 0 || me != new_me) {
+ cr = new ArdourCanvas::Rectangle (group);
+ _coverage_frames.push_back (cr);
+ cr->set_x0 (trackview.editor().sample_to_pixel (t - position));
+ cr->set_y0 (1);
+ cr->set_y1 (_height + 1);
+ cr->set_outline (false);
+ cr->set_ignore_events (true);
+ if (new_me) {
+ cr->set_fill_color (UINT_RGBA_CHANGE_A (non_playing_color, 0));
+ } else {
+ cr->set_fill_color (non_playing_color);
+ }
+ }
+ t = pl->find_next_region_boundary (t, 1);
+ if (t < 0) {
+ break;
+ }
+ me = new_me;
}
+ t = pl->find_next_region_boundary (t, 1);
+
if (cr) {
/* finish off the last rectangle */
cr->set_x1 (trackview.editor().sample_to_pixel (end - position));