diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-05 17:42:47 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-10 15:27:10 +0200 |
commit | f1f84140e73f0274adfcf7fd6d2046bdfe643ef8 (patch) | |
tree | efc0d4d005dd7660c01534eb76db2e268db8738b /gtk2_ardour | |
parent | d8477de0ab1cf1a9c202918fe17e4e7e2d58ee1f (diff) |
reset individual route's peak display
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 11 | ||||
-rw-r--r-- | gtk2_ardour/gain_meter.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 12 | ||||
-rw-r--r-- | gtk2_ardour/meter_strip.h | 1 |
6 files changed, 24 insertions, 3 deletions
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 75e24be256..5ddfdc18f4 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -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; @@ -345,6 +346,14 @@ GainMeterBase::reset_peak_display () } void +GainMeterBase::reset_route_peak_display (Route* route) +{ + if (_route && _route.get() == route) { + reset_peak_display (); + } +} + +void GainMeterBase::reset_group_peak_display (RouteGroup* group) { if (_route && group == _route->route_group()) { diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index ba7842e085..19e03b82ee 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -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 (); diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index a5fd5ea407..9b90931e73 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -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* diff --git a/gtk2_ardour/meter_patterns.h b/gtk2_ardour/meter_patterns.h index 4a37271f40..ae89a7866d 100644 --- a/gtk2_ardour/meter_patterns.h +++ b/gtk2_ardour/meter_patterns.h @@ -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); diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index cd15dd5bb0..011bbe554e 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -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 ()); @@ -372,9 +373,16 @@ MeterStrip::meter_ticks2_expose (GdkEventExpose *ev) } 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; } diff --git a/gtk2_ardour/meter_strip.h b/gtk2_ardour/meter_strip.h index 3836ede93f..454a3af6f1 100644 --- a/gtk2_ardour/meter_strip.h +++ b/gtk2_ardour/meter_strip.h @@ -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); |