correctly set up members of GainMeterBase in ::set_controls()
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 25 Jan 2016 17:50:27 +0000 (12:50 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 31 May 2016 19:30:38 +0000 (15:30 -0400)
gtk2_ardour/gain_meter.cc

index a91382d574353df4ca8c03a1b5c1be6d5a288ac7..bb20555edad3d640ddb7818af23c7a018028fffd 100644 (file)
@@ -190,12 +190,15 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
        connections.clear ();
        model_connections.drop_connections ();
 
-       if (!pm && !amp) {
+       /* no meter and no control? nothing to do ... */
+
+       if (!pm && !control) {
                level_meter->set_meter (0);
                gain_slider->set_controllable (boost::shared_ptr<PBD::Controllable>());
                _meter.reset ();
                _amp.reset ();
                _route.reset ();
+               _control.reset ();
                return;
        }
 
@@ -204,8 +207,6 @@ GainMeterBase::set_controls (boost::shared_ptr<Route> r,
        _route = r;
        _control = control;
 
-       assert (_control);
-
        level_meter->set_meter (pm.get());
        gain_slider->set_controllable (_control);
 
@@ -731,13 +732,13 @@ GainMeterBase::meter_point_clicked ()
 void
 GainMeterBase::amp_start_touch ()
 {
-       _control->start_touch (_amp->session().transport_frame());
+       _control->start_touch (_control->session().transport_frame());
 }
 
 void
 GainMeterBase::amp_stop_touch ()
 {
-       _control->stop_touch (false, _amp->session().transport_frame());
+       _control->stop_touch (false, _control->session().transport_frame());
 }
 
 gint