diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index ca25f20471..be86691594 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -969,6 +969,9 @@ GainMeter::set_controls (boost::shared_ptr r, _meter->ConfigurationChanged.connect ( model_connections, invalidator (*this), boost::bind (&GainMeter::meter_configuration_changed, this, _1), gui_context() ); + _meter->TypeChanged.connect ( + model_connections, invalidator (*this), boost::bind (&GainMeter::meter_type_changed, this, _1), gui_context() + ); meter_configuration_changed (_meter->input_streams ()); } @@ -1077,3 +1080,8 @@ GainMeter::meter_configuration_changed (ChanCount c) meter_clear_pattern_cache(); // XXX only once } +void +GainMeter::meter_type_changed (MeterType t) +{ + _route->set_meter_type(t); +} diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 98d1288b0c..9353cfeaad 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -221,6 +221,7 @@ class GainMeter : public GainMeterBase, public Gtk::VBox private: void meter_configuration_changed (ARDOUR::ChanCount); + void meter_type_changed (ARDOUR::MeterType); Gtk::HBox gain_display_box; Gtk::HBox fader_box; diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 691bf34d3f..50ef230e65 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -112,8 +112,9 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr rt) level_meter->set_meter (_route->shared_peak_meter().get()); level_meter->clear_meters(); level_meter->setup_meters (220, meter_width, 6); + level_meter->set_type (_route->meter_type()); level_meter->ButtonPress.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::level_meter_button_press, this, _1)); - level_meter->set_type (_route->meter_type_meterbridge()); + level_meter->MeterTypeChanged.connect_same_thread (level_meter_connection, boost::bind (&MeterStrip::meter_type_changed, this, _1)); meter_align.set(0.5, 0.5, 0.0, 1.0); meter_align.add(*level_meter); @@ -462,14 +463,21 @@ MeterStrip::add_level_meter_item (Menu_Helpers::MenuList& items, RadioMenuItem:: { using namespace Menu_Helpers; - items.push_back (RadioMenuElem (group, name, sigc::bind (sigc::mem_fun (*this, &MeterStrip::set_meter_point), type))); + items.push_back (RadioMenuElem (group, name, sigc::bind (sigc::mem_fun (*this, &MeterStrip::set_meter_type), type))); RadioMenuItem* i = dynamic_cast (&items.back ()); - i->set_active (_route->meter_type_meterbridge() == type); + i->set_active (_route->meter_type() == type); } void -MeterStrip::set_meter_point (MeterType m) +MeterStrip::set_meter_type (MeterType m) { level_meter->set_type (m); - _route->set_meter_type_meterbridge(m); + //_route->set_meter_type(m); } + +void +MeterStrip::meter_type_changed (MeterType t) +{ + _route->set_meter_type(t); +} + diff --git a/gtk2_ardour/meter_strip.h b/gtk2_ardour/meter_strip.h index 7bbed6370a..a1851b92b0 100644 --- a/gtk2_ardour/meter_strip.h +++ b/gtk2_ardour/meter_strip.h @@ -103,11 +103,11 @@ class MeterStrip : public Gtk::VBox, public RouteUI bool _has_midi; LevelMeter *level_meter; - void meter_changed (); PBD::ScopedConnection _config_connection; void strip_property_changed (const PBD::PropertyChange&); void meter_configuration_changed (ARDOUR::ChanCount); + void meter_type_changed (ARDOUR::MeterType); static int max_pattern_metric_size; // == FastMeter::max_pattern_metric_size @@ -119,7 +119,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI bool level_meter_button_press (GdkEventButton* ev); void popup_level_meter_menu (GdkEventButton* ev); void add_level_meter_item (Gtk::Menu_Helpers::MenuList& items, Gtk::RadioMenuItem::Group& group, std::string const & name, ARDOUR::MeterType mode); - void set_meter_point (ARDOUR::MeterType mode); + void set_meter_type (ARDOUR::MeterType mode); }; #endif /* __ardour_mixer_strip__ */ diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 8baa1df8d5..238b6077a6 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -411,7 +411,7 @@ MixerStrip::set_route (boost::shared_ptr rt) gpm.gain_display.get_parent()->remove (gpm.gain_display); } - gpm.set_type (rt->meter_type_mixer()); + gpm.set_type (rt->meter_type()); middle_button_table.attach (gpm.gain_display,0,1,1,2); middle_button_table.attach (gpm.peak_display,1,2,1,2); @@ -2165,12 +2165,12 @@ MixerStrip::add_level_meter_item_type (Menu_Helpers::MenuList& items, items.push_back (RadioMenuElem (group, name, sigc::bind (sigc::mem_fun (*this, &MixerStrip::set_meter_type), type))); RadioMenuItem* i = dynamic_cast (&items.back ()); - i->set_active (_route->meter_type_mixer() == type); + i->set_active (_route->meter_type() == type); } void MixerStrip::set_meter_type (MeterType t) { - _route->set_meter_type_mixer (t); + //_route->set_meter_type (t); gpm.set_type (t); } diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 783011a158..2e44d00984 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -181,10 +181,8 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember, MeterPoint meter_point() const { return _meter_point; } void meter (); - void set_meter_type_mixer (MeterType t) { _meter_type_mixer = t; } - void set_meter_type_meterbridge (MeterType t) { _meter_type_meterbridge = t; } - MeterType meter_type_mixer() const { return _meter_type_mixer; } - MeterType meter_type_meterbridge() const { return _meter_type_meterbridge; } + void set_meter_type (MeterType t) { _meter_type = t; } + MeterType meter_type() const { return _meter_type; } /* Processors */ @@ -491,8 +489,7 @@ class Route : public SessionObject, public Automatable, public RouteGroupMember, Flag _flags; int _pending_declick; MeterPoint _meter_point; - MeterType _meter_type_mixer; - MeterType _meter_type_meterbridge; + MeterType _meter_type; boost::dynamic_bitset<> _phase_invert; bool _self_solo; uint32_t _soloed_by_others_upstream; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index d3e0fbce22..e87cb4b03f 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -83,8 +83,7 @@ Route::Route (Session& sess, string name, Flag flg, DataType default_type) , _flags (flg) , _pending_declick (true) , _meter_point (MeterPostFader) - , _meter_type_mixer (MeterPeak) - , _meter_type_meterbridge (MeterPeak) + , _meter_type (MeterPeak) , _self_solo (false) , _soloed_by_others_upstream (0) , _soloed_by_others_downstream (0) @@ -1880,8 +1879,7 @@ Route::state(bool full_state) node->add_property("denormal-protection", _denormal_protection?"yes":"no"); node->add_property("meter-point", enum_2_string (_meter_point)); - node->add_property("meter-type-mixer", enum_2_string (_meter_type_mixer)); - node->add_property("meter-type-meterbridge", enum_2_string (_meter_type_meterbridge)); + node->add_property("meter-type", enum_2_string (_meter_type)); if (_route_group) { node->add_property("route-group", _route_group->name()); @@ -2057,12 +2055,8 @@ Route::set_state (const XMLNode& node, int version) } } - if ((prop = node.property (X_("meter-type-mixer"))) != 0) { - _meter_type_mixer = MeterType (string_2_enum (prop->value (), _meter_type_mixer)); - } - - if ((prop = node.property (X_("meter-type-meterbridge"))) != 0) { - _meter_type_meterbridge = MeterType (string_2_enum (prop->value (), _meter_type_meterbridge)); + if ((prop = node.property (X_("meter-type"))) != 0) { + _meter_type = MeterType (string_2_enum (prop->value (), _meter_type)); } set_processor_state (processor_state);