projects
/
ardour.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dedicated namespace for video-utils
[ardour.git]
/
gtk2_ardour
/
gain_meter.cc
diff --git
a/gtk2_ardour/gain_meter.cc
b/gtk2_ardour/gain_meter.cc
index 749b98c586339f4e72cce5921036b3e6a3ad5eb0..67f9ce9370260f0705f3fb50231f4a4c7be3874c 100644
(file)
--- a/
gtk2_ardour/gain_meter.cc
+++ b/
gtk2_ardour/gain_meter.cc
@@
-60,6
+60,7
@@
using namespace Gtkmm2ext;
using namespace Gtk;
using namespace std;
using Gtkmm2ext::Keyboard;
using namespace Gtk;
using namespace std;
using Gtkmm2ext::Keyboard;
+using namespace ArdourMeter;
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int fader_girth)
: gain_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0.0, 1.0, 0.01, 0.1)
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int fader_girth)
: gain_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0.0, 1.0, 0.01, 0.1)
@@
-83,7
+84,7
@@
GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int
gain_slider = manage (new VSliderController (&gain_adjustment, fader_length, fader_girth, false));
}
gain_slider = manage (new VSliderController (&gain_adjustment, fader_length, fader_girth, false));
}
- level_meter = new LevelMeter(_session);
+ level_meter = new LevelMeter
HBox
(_session);
level_meter->ButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&GainMeterBase::level_meter_button_press, this, _1));
meter_metric_area.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeterBase::level_meter_button_press));
level_meter->ButtonPress.connect_same_thread (_level_meter_connection, boost::bind (&GainMeterBase::level_meter_button_press, this, _1));
meter_metric_area.signal_button_press_event().connect (sigc::mem_fun (*this, &GainMeterBase::level_meter_button_press));
@@
-277,7
+278,6
@@
GainMeterBase::setup_meters (int len)
switch (_width) {
case Wide:
switch (_width) {
case Wide:
- meter_metric_area.set_size_request(24, -1);
meter_ticks1_area.show();
meter_ticks2_area.show();
if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
meter_ticks1_area.show();
meter_ticks2_area.show();
if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) {
@@
-286,7
+286,6
@@
GainMeterBase::setup_meters (int len)
break;
case Narrow:
meter_width = 2;
break;
case Narrow:
meter_width = 2;
- meter_metric_area.set_size_request(20, -1);
meter_ticks1_area.hide();
meter_ticks2_area.hide();
break;
meter_ticks1_area.hide();
meter_ticks2_area.hide();
break;
@@
-527,9
+526,12
@@
GainMeterBase::gain_changed ()
void
GainMeterBase::set_meter_strip_name (const char * name)
{
void
GainMeterBase::set_meter_strip_name (const char * name)
{
+ char tmp[256];
meter_metric_area.set_name (name);
meter_metric_area.set_name (name);
- meter_ticks1_area.set_name (name);
- meter_ticks2_area.set_name (name);
+ sprintf(tmp, "Mark%sLeft", name);
+ meter_ticks1_area.set_name (tmp);
+ sprintf(tmp, "Mark%sRight", name);
+ meter_ticks2_area.set_name (tmp);
}
void
}
void
@@
-951,6
+953,8
@@
GainMeter::GainMeter (Session* s, int fader_length)
meter_hbox.pack_start (meter_metric_area, false, false);
}
meter_hbox.pack_start (meter_metric_area, false, false);
}
+GainMeter::~GainMeter () { }
+
void
GainMeter::set_controls (boost::shared_ptr<Route> r,
boost::shared_ptr<PeakMeter> meter,
void
GainMeter::set_controls (boost::shared_ptr<Route> r,
boost::shared_ptr<PeakMeter> meter,
@@
-978,6
+982,10
@@
GainMeter::set_controls (boost::shared_ptr<Route> r,
}
}
+ if (_route) {
+ _route->active_changed.connect (model_connections, invalidator (*this), boost::bind (&GainMeter::route_active_changed, this), gui_context ());
+ }
+
/*
if we have a non-hidden route (ie. we're not the click or the auditioner),
pack some route-dependent stuff.
/*
if we have a non-hidden route (ie. we're not the click or the auditioner),
pack some route-dependent stuff.
@@
-1014,19
+1022,31
@@
GainMeter::get_gm_width ()
gint
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
{
gint
GainMeter::meter_metrics_expose (GdkEventExpose *ev)
{
- return meter_expose_metrics(ev, _types, &meter_metric_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_metrics(ev, MeterPeak, _types, &meter_metric_area);
+ }
+ return meter_expose_metrics(ev, _route->meter_type(), _types, &meter_metric_area);
}
gint
GainMeter::meter_ticks1_expose (GdkEventExpose *ev)
{
}
gint
GainMeter::meter_ticks1_expose (GdkEventExpose *ev)
{
- return meter_expose_ticks(ev, _types, &meter_ticks1_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_ticks(ev, MeterPeak, _types, &meter_ticks1_area);
+ }
+ return meter_expose_ticks(ev, _route->meter_type(), _types, &meter_ticks1_area);
}
gint
GainMeter::meter_ticks2_expose (GdkEventExpose *ev)
{
}
gint
GainMeter::meter_ticks2_expose (GdkEventExpose *ev)
{
- return meter_expose_ticks(ev, _types, &meter_ticks2_area);
+ if (!_route) {
+ if (_types.empty()) { _types.push_back(DataType::AUDIO); }
+ return meter_expose_ticks(ev, MeterPeak, _types, &meter_ticks2_area);
+ }
+ return meter_expose_ticks(ev, _route->meter_type(), _types, &meter_ticks2_area);
}
boost::shared_ptr<PBD::Controllable>
}
boost::shared_ptr<PBD::Controllable>
@@
-1068,18
+1088,21
@@
GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
set_meter_strip_name ("AudioBusMetricsInactive");
}
}
- else if (type == (1 << DataType::AUDIO)) {
+ else if (
+ (type == (1 << DataType::MIDI))
+ || (_route && boost::dynamic_pointer_cast<MidiTrack>(_route))
+ ) {
if (!_route || _route->active()) {
if (!_route || _route->active()) {
- set_meter_strip_name ("
Audio
TrackMetrics");
+ set_meter_strip_name ("
Midi
TrackMetrics");
} else {
} else {
- set_meter_strip_name ("
Audio
TrackMetricsInactive");
+ set_meter_strip_name ("
Midi
TrackMetricsInactive");
}
}
}
}
- else if (type == (1 << DataType::
MIDI
)) {
+ else if (type == (1 << DataType::
AUDIO
)) {
if (!_route || _route->active()) {
if (!_route || _route->active()) {
- set_meter_strip_name ("
Midi
TrackMetrics");
+ set_meter_strip_name ("
Audio
TrackMetrics");
} else {
} else {
- set_meter_strip_name ("
Midi
TrackMetricsInactive");
+ set_meter_strip_name ("
Audio
TrackMetricsInactive");
}
} else {
if (!_route || _route->active()) {
}
} else {
if (!_route || _route->active()) {
@@
-1088,11
+1111,22
@@
GainMeter::meter_configuration_changed (ChanCount c)
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
set_meter_strip_name ("AudioMidiTrackMetricsInactive");
}
}
- meter_clear_pattern_cache(); // XXX only once
+
+ setup_meters();
+ meter_clear_pattern_cache(4);
+}
+
+void
+GainMeter::route_active_changed ()
+{
+ if (_meter) {
+ meter_configuration_changed (_meter->input_streams ());
+ }
}
void
GainMeter::meter_type_changed (MeterType t)
{
_route->set_meter_type(t);
}
void
GainMeter::meter_type_changed (MeterType t)
{
_route->set_meter_type(t);
+ RedrawMetrics();
}
}