ensure that all waveviews have ALL their colors set accurately before first render
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Jun 2014 19:06:48 +0000 (15:06 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 19 Jun 2014 19:06:48 +0000 (15:06 -0400)
Avoids occasional bright red zero line drawn because the color(s) had not been reset correctly

gtk2_ardour/audio_region_view.cc
gtk2_ardour/audio_region_view.h

index 38dcc5c3869a91d3f805c21002e4c015aebbe009..928902bf42ca06b3f5f3e6ec43667c20063204b3 100644 (file)
@@ -1157,6 +1157,10 @@ AudioRegionView::create_one_wave (uint32_t which, bool /*direct*/)
                
        wave->set_logscaled (Config->get_waveform_scale() == Logarithmic);
 
+       vector<ArdourCanvas::WaveView*> v;
+       v.push_back (wave);
+       set_some_waveform_colors (v);
+
        if (!Config->get_show_waveforms ()) {
                wave->hide();
        }
@@ -1390,6 +1394,12 @@ AudioRegionView::color_handler ()
 
 void
 AudioRegionView::set_waveform_colors ()
+{
+       set_some_waveform_colors (waves);
+}
+
+void
+AudioRegionView::set_some_waveform_colors (vector<ArdourCanvas::WaveView*>& waves_to_color)
 {
        ArdourCanvas::Color fill;
        ArdourCanvas::Color outline;
@@ -1435,7 +1445,7 @@ AudioRegionView::set_waveform_colors ()
                }
        }
 
-        for (vector<ArdourCanvas::WaveView*>::iterator w = waves.begin(); w != waves.end(); ++w) {
+        for (vector<ArdourCanvas::WaveView*>::iterator w = waves_to_color.begin(); w != waves_to_color.end(); ++w) {
                (*w)->set_fill_color (fill);
                (*w)->set_outline_color (outline);
                (*w)->set_clip_color (clip);
index 20caea17c14d9e213e787fc8d4e7c30674c994ec..ffadce0c5970e2142c2a7511a84794e81e13e769 100644 (file)
@@ -205,6 +205,7 @@ private:
 
        void parameter_changed (std::string const &);
        void setup_waveform_visibility ();
+       void set_some_waveform_colors (std::vector<ArdourCanvas::WaveView*>& waves_to_color);
 
        /** A ScopedConnection for each PeaksReady callback (one per channel).  Each member
         *  may be 0 if no connection exists.