summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2013-07-05 17:42:47 +0200
committerRobin Gareus <robin@gareus.org>2013-07-10 15:27:10 +0200
commitf1f84140e73f0274adfcf7fd6d2046bdfe643ef8 (patch)
treeefc0d4d005dd7660c01534eb76db2e268db8738b
parentd8477de0ab1cf1a9c202918fe17e4e7e2d58ee1f (diff)
reset individual route's peak display
-rw-r--r--gtk2_ardour/gain_meter.cc11
-rw-r--r--gtk2_ardour/gain_meter.h1
-rw-r--r--gtk2_ardour/meter_patterns.cc1
-rw-r--r--gtk2_ardour/meter_patterns.h1
-rw-r--r--gtk2_ardour/meter_strip.cc12
-rw-r--r--gtk2_ardour/meter_strip.h1
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);