diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 47d11f2029..63c8651520 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -539,7 +539,7 @@ GainMeterBase::meter_press(GdkEventButton* ev) // XXX no undo yet - _route->set_meter_point (next_meter_point (_route->meter_point()), this); + _route->set_meter_point (next_meter_point (_route->meter_point())); } } } @@ -568,7 +568,7 @@ GainMeterBase::meter_release(GdkEventButton*) void GainMeterBase::set_meter_point (Route& route, MeterPoint mp) { - route.set_meter_point (mp, this); + route.set_meter_point (mp); } void @@ -577,9 +577,9 @@ GainMeterBase::set_mix_group_meter_point (Route& route, MeterPoint mp) RouteGroup* mix_group; if((mix_group = route.route_group()) != 0){ - mix_group->apply (&Route::set_meter_point, mp, this); + mix_group->apply (&Route::set_meter_point, mp); } else { - route.set_meter_point (mp, this); + route.set_meter_point (mp); } } diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index a0cc11092e..64b388f030 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -412,7 +412,7 @@ MixerStrip::set_route (boost::shared_ptr rt) _("Click to Add/Edit Comments"): _route->comment()); - _route->meter_change.connect (route_connections, invalidator (*this), ui_bind (&MixerStrip::meter_changed, this, _1), gui_context()); + _route->meter_change.connect (route_connections, invalidator (*this), bind (&MixerStrip::meter_changed, this), gui_context()); _route->input()->changed.connect (route_connections, invalidator (*this), ui_bind (&MixerStrip::input_changed, this, _1, _2), gui_context()); _route->output()->changed.connect (route_connections, invalidator (*this), ui_bind (&MixerStrip::output_changed, this, _1, _2), gui_context()); _route->route_group_changed.connect (route_connections, invalidator (*this), boost::bind (&MixerStrip::route_group_changed, this), gui_context()); @@ -1599,9 +1599,9 @@ MixerStrip::engine_running () /** Called when the metering point has changed */ void -MixerStrip::meter_changed (void *src) +MixerStrip::meter_changed () { - ENSURE_GUI_THREAD (*this, &MixerStrip::meter_changed, src) + ENSURE_GUI_THREAD (*this, &MixerStrip::meter_changed) switch (_route->meter_point()) { case MeterInput: diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index acb69534b3..3e264502a4 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -156,7 +156,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox Gtk::Button meter_point_button; Gtk::Label meter_point_label; - void meter_changed (void *); + void meter_changed (); Gtk::Button diskstream_button; Gtk::Label diskstream_label; diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc index 9c2eccbff9..b3b3f360e3 100644 --- a/gtk2_ardour/route_time_axis.cc +++ b/gtk2_ardour/route_time_axis.cc @@ -190,7 +190,7 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, boost::sh } controls_hbox.pack_start(gm.get_level_meter(), false, false); - _route->meter_change.connect (*this, invalidator (*this), ui_bind (&RouteTimeAxisView::meter_changed, this, _1), gui_context()); + _route->meter_change.connect (*this, invalidator (*this), bind (&RouteTimeAxisView::meter_changed, this), gui_context()); _route->input()->changed.connect (*this, invalidator (*this), ui_bind (&RouteTimeAxisView::io_changed, this, _1, _2), gui_context()); _route->output()->changed.connect (*this, invalidator (*this), ui_bind (&RouteTimeAxisView::io_changed, this, _1, _2), gui_context()); @@ -2290,9 +2290,9 @@ RouteTimeAxisView::clear_meter () } void -RouteTimeAxisView::meter_changed (void *src) +RouteTimeAxisView::meter_changed () { - ENSURE_GUI_THREAD (*this, &RouteTimeAxisView::meter_changed, src) + ENSURE_GUI_THREAD (*this, &RouteTimeAxisView::meter_changed) reset_meter(); } diff --git a/gtk2_ardour/route_time_axis.h b/gtk2_ardour/route_time_axis.h index 763504e781..7f35e54485 100644 --- a/gtk2_ardour/route_time_axis.h +++ b/gtk2_ardour/route_time_axis.h @@ -150,7 +150,7 @@ public: void reset_meter (); void clear_meter (); void io_changed (ARDOUR::IOChange, void *); - void meter_changed (void *); + void meter_changed (); void effective_gain_display () { gm.effective_gain_display(); } static void setup_slider_pix (); diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index f971e44a7a..011ff8ba7b 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -151,7 +151,8 @@ class Route : public SessionObject, public AutomatableControls, public RouteGrou void set_denormal_protection (bool yn); bool denormal_protection() const; - void set_meter_point (MeterPoint, void *src); + void set_meter_point (MeterPoint); + void infer_meter_point () const; MeterPoint meter_point() const { return _meter_point; } void meter (); @@ -247,7 +248,7 @@ class Route : public SessionObject, public AutomatableControls, public RouteGrou PBD::Signal1 processors_changed; PBD::Signal1 record_enable_changed; /** the metering point has changed */ - PBD::Signal1 meter_change; + PBD::Signal0 meter_change; PBD::Signal0 signal_latency_changed; PBD::Signal0 initial_delay_changed; diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h index c7616a746e..7dbdc1d882 100644 --- a/libs/ardour/ardour/route_group.h +++ b/libs/ardour/ardour/route_group.h @@ -98,12 +98,24 @@ class RouteGroup : public SessionObject } } + void apply (void (Route::*func)()) { + for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { + ((*i).get()->*func)(); + } + } + template void apply (void (Route::*func)(T, void *), T val, void *src) { for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { ((*i).get()->*func)(val, src); } } + template void apply (void (Route::*func)(T), T val) { + for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { + ((*i).get()->*func)(val); + } + } + template void foreach_route (T *obj, void (T::*func)(Route&)) { for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) { (obj->*func)(**i); diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 69ec29a0b1..9db0d18a91 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -1782,7 +1782,8 @@ Route::_set_state (const XMLNode& node, int version, bool /*call_base*/) } if ((prop = node.property (X_("meter-point"))) != 0) { - _meter_point = MeterPoint (string_2_enum (prop->value (), _meter_point)); + MeterPoint mp = MeterPoint (string_2_enum (prop->value (), _meter_point)); + set_meter_point (mp); if (_meter) { _meter->set_display_to_user (_meter_point == MeterCustom); } @@ -2678,7 +2679,7 @@ Route::flush_processors () } void -Route::set_meter_point (MeterPoint p, void *src) +Route::set_meter_point (MeterPoint p) { /* CAN BE CALLED FROM PROCESS CONTEXT */ @@ -2740,7 +2741,7 @@ Route::set_meter_point (MeterPoint p, void *src) } _meter_point = p; - meter_change (src); /* EMIT SIGNAL */ + meter_change (); /* EMIT SIGNAL */ bool const meter_visibly_changed = (_meter->display_to_user() != meter_was_visible_to_user); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 22a9100b31..f67714401f 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -727,7 +727,7 @@ Session::remove_state (string snapshot_name) #ifdef HAVE_JACK_SESSION void -Session::jack_session_event( jack_session_event_t * event ) +Session::jack_session_event (jack_session_event_t * event) { if (save_state ("jacksession_snap")) { event->flags = JackSessionSaveError; @@ -737,7 +737,7 @@ Session::jack_session_event( jack_session_event_t * event ) string cmd ("PROG_NAME -U "); cmd += event->client_uuid; - cmd += ' \"'; + cmd += " \""; cmd += xml_path.to_string(); cmd += '\"'; diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 4e5f4a21b7..47ec248d59 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -185,10 +185,10 @@ Track::set_record_enable (bool yn, void *src) if (_diskstream->record_enabled()) { if (_meter_point != MeterCustom) { - set_meter_point (MeterInput, this); + set_meter_point (MeterInput); } } else { - set_meter_point (_saved_meter_point, this); + set_meter_point (_saved_meter_point); } _rec_enable_control->Changed ();