reset individual route's peak display
authorRobin Gareus <robin@gareus.org>
Fri, 5 Jul 2013 15:42:47 +0000 (17:42 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 10 Jul 2013 13:27:10 +0000 (15:27 +0200)
gtk2_ardour/gain_meter.cc
gtk2_ardour/gain_meter.h
gtk2_ardour/meter_patterns.cc
gtk2_ardour/meter_patterns.h
gtk2_ardour/meter_strip.cc
gtk2_ardour/meter_strip.h

index 75e24be256bb7051755c5f10406a6bb6b93253a7..5ddfdc18f4a8d5d8a8c68481ce4dc2608bd951ec 100644 (file)
@@ -128,6 +128,7 @@ GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
        gain_display.signal_key_press_event().connect (sigc::mem_fun(*this, &GainMeterBase::gain_key_press), false);
 
        ResetAllPeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_peak_display));
+       ResetRoutePeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_route_peak_display));
        ResetGroupPeakDisplays.connect (sigc::mem_fun(*this, &GainMeterBase::reset_group_peak_display));
 
        UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &GainMeterBase::on_theme_changed));
@@ -328,7 +329,7 @@ GainMeterBase::peak_button_release (GdkEventButton* ev)
                        ResetGroupPeakDisplays (_route->route_group());
                }
        } else {
-               reset_peak_display ();
+               ResetRoutePeakDisplays (_route.get());
        }
 
        return true;
@@ -344,6 +345,14 @@ GainMeterBase::reset_peak_display ()
        peak_display.set_name ("MixerStripPeakDisplay");
 }
 
+void
+GainMeterBase::reset_route_peak_display (Route* route)
+{
+       if (_route && _route.get() == route) {
+               reset_peak_display ();
+       }
+}
+
 void
 GainMeterBase::reset_group_peak_display (RouteGroup* group)
 {
index ba7842e085cb6a50c30dd60c867a8b3f67d23599..19e03b82ee2355f37072871ffcb61ab06878fea3 100644 (file)
@@ -181,6 +181,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
        void parameter_changed (const char*);
 
        void reset_peak_display ();
+       void reset_route_peak_display (ARDOUR::Route*);
        void reset_group_peak_display (ARDOUR::RouteGroup*);
 
        void on_theme_changed ();
index a5fd5ea40700ed52fc0ccb2fed90ac8227f56a7b..9b90931e73eacb881e99846ba2b5a6113f44489a 100644 (file)
@@ -39,6 +39,7 @@ using namespace std;
 static const int max_pattern_metric_size = 1026;
 
 sigc::signal<void> ResetAllPeakDisplays;
+sigc::signal<void,ARDOUR::Route*> ResetRoutePeakDisplays;
 sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
 
 cairo_pattern_t*
index 4a37271f405907ef8aed379aad3eb5ce580c80e3..ae89a7866df32d2d5fac708df0189e4a08e5ee22 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <sigc++/signal.h>
 extern sigc::signal<void> ResetAllPeakDisplays;
+extern sigc::signal<void,ARDOUR::Route*> ResetRoutePeakDisplays;
 extern sigc::signal<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
 
 cairo_pattern_t* meter_render_ticks (Gtk::Widget& w, std::vector<ARDOUR::DataType> types);
index cd15dd5bb050332b4eda1ccada4f4fe5be5b35f8..011bbe554e16d9c9429b3507f9288d868cdcd16a 100644 (file)
@@ -172,6 +172,7 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
                        );
 
        ResetAllPeakDisplays.connect (sigc::mem_fun(*this, &MeterStrip::reset_peak_display));
+       ResetRoutePeakDisplays.connect (sigc::mem_fun(*this, &MeterStrip::reset_route_peak_display));
        ResetGroupPeakDisplays.connect (sigc::mem_fun(*this, &MeterStrip::reset_group_peak_display));
 
        meter_configuration_changed (_route->shared_peak_meter()->input_streams ());
@@ -371,10 +372,17 @@ MeterStrip::meter_ticks2_expose (GdkEventExpose *ev)
        return meter_expose_ticks(ev, _types, &meter_ticks2_area);
 }
 
+void
+MeterStrip::reset_route_peak_display (Route* route)
+{
+       if (_route && _route.get() == route) {
+               reset_peak_display ();
+       }
+}
+
 void
 MeterStrip::reset_group_peak_display (RouteGroup* group)
 {
-       /* UNUSED -- need connection w/mixer || other meters */
        if (_route && group == _route->route_group()) {
                reset_peak_display ();
        }
@@ -400,7 +408,7 @@ MeterStrip::peak_button_release (GdkEventButton* ev)
                        ResetGroupPeakDisplays (_route->route_group());
                }
        } else {
-               reset_peak_display ();
+               ResetRoutePeakDisplays (_route.get());
        }
        return true;
 }
index 3836ede93f88062d80aa750ef340cbfdab6ebef7..454a3af6f1ebc65abe01900d72520a13a0e431cd 100644 (file)
@@ -57,6 +57,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI
        static PBD::Signal0<void> MetricChanged;
 
        void reset_peak_display ();
+       void reset_route_peak_display (ARDOUR::Route*);
        void reset_group_peak_display (ARDOUR::RouteGroup*);
 
        void set_metric_mode (int);