meter point restore handling, and related matters

git-svn-id: svn://localhost/ardour2/branches/3.0@6854 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2010-04-03 13:40:34 +00:00
parent d166d0584f
commit 3104041e67
10 changed files with 35 additions and 21 deletions

View File

@ -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);
}
}

View File

@ -412,7 +412,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> 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:

View File

@ -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;

View File

@ -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();
}

View File

@ -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 ();

View File

@ -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<void,RouteProcessorChange> processors_changed;
PBD::Signal1<void,void*> record_enable_changed;
/** the metering point has changed */
PBD::Signal1<void,void*> meter_change;
PBD::Signal0<void> meter_change;
PBD::Signal0<void> signal_latency_changed;
PBD::Signal0<void> initial_delay_changed;

View File

@ -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<class T> 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<class T> void apply (void (Route::*func)(T), T val) {
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
((*i).get()->*func)(val);
}
}
template<class T> void foreach_route (T *obj, void (T::*func)(Route&)) {
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
(obj->*func)(**i);

View File

@ -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);

View File

@ -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 += '\"';

View File

@ -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 ();