first pass on track mode switch; fixes to dangling region refs after capture; destroy...
[ardour.git] / gtk2_ardour / gain_meter.cc
index 5fa8c462bc3f08ccdd68cfe99413f97022858745..d55301189837f0b67a02ab753dcca975812ff7fe 100644 (file)
@@ -201,7 +201,7 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s)
        gain_adjustment.signal_value_changed().connect (mem_fun(*this, &GainMeter::gain_adjusted));
        peak_display.signal_button_release_event().connect (mem_fun(*this, &GainMeter::peak_button_release));
 
-       _session.MeterHoldChanged.connect (mem_fun(*this, &GainMeter::meter_hold_changed));
+       Config->ParameterChanged.connect (mem_fun (*this, &GainMeter::parameter_changed));
 
        gain_changed (0);
        update_gain_sensitive ();
@@ -346,17 +346,24 @@ GainMeter::update_meters ()
 }
 
 void
-GainMeter::meter_hold_changed()
+GainMeter::parameter_changed(const char* parameter_name)
 {
-       ENSURE_GUI_THREAD(mem_fun(*this, &GainMeter::meter_hold_changed));
-       
-       vector<MeterInfo>::iterator i;
-       uint32_t n;
+#define PARAM_IS(x) (!strcmp (parameter_name, (x)))
+
+       ENSURE_GUI_THREAD (bind (mem_fun(*this, &GainMeter::parameter_changed), parameter_name));
+
+       if (PARAM_IS ("meter-hold")) {
        
-       for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
+               vector<MeterInfo>::iterator i;
+               uint32_t n;
                
-               (*i).meter->set_hold_count ((uint32_t) floor(_session.meter_hold()));
+               for (n = 0, i = meters.begin(); i != meters.end(); ++i, ++n) {
+                       
+                       (*i).meter->set_hold_count ((uint32_t) floor(Config->get_meter_hold()));
+               }
        }
+
+#undef PARAM_IS
 }
 
 void
@@ -424,7 +431,7 @@ GainMeter::setup_meters ()
        for (uint32_t n = 0; n < nmeters; ++n) {
                if (meters[n].width != width) {
                        delete meters[n].meter;
-                       meters[n].meter = new FastMeter ((uint32_t) floor (_session.meter_hold()), width, FastMeter::Vertical);
+                       meters[n].meter = new FastMeter ((uint32_t) floor (Config->get_meter_hold()), width, FastMeter::Vertical);
                        meters[n].width = width;
 
                        meters[n].meter->add_events (Gdk::BUTTON_RELEASE_MASK);
@@ -465,7 +472,7 @@ GainMeter::reset_peak_display ()
 {
        max_peak = minus_infinity();
        peak_display_label.set_text (_("-Inf"));
-       peak_display.set_name ("Mixerstrippeakdisplay");
+       peak_display.set_name ("MixerStripPeakDisplay");
 }
 
 void