diff --git a/libs/ardour/ardour/processor.h b/libs/ardour/ardour/processor.h index 772ae3520d..18f13dbc78 100644 --- a/libs/ardour/ardour/processor.h +++ b/libs/ardour/ardour/processor.h @@ -113,6 +113,9 @@ class Processor : public SessionObject, public Automatable, public Latent void set_ui (void*); void* get_ui () const { return _ui_pointer; } + void set_owner (SessionObject*); + SessionObject* owner() const; + protected: virtual int set_state_2X (const XMLNode&, int version); @@ -125,6 +128,7 @@ protected: bool _display_to_user; bool _pre_fader; ///< true if this processor is currently placed before the Amp, otherwise false void* _ui_pointer; + SessionObject* _owner; }; } // namespace ARDOUR diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index 3f8fdf509d..f9590bee11 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -269,3 +269,15 @@ Processor::set_ui (void* p) { _ui_pointer = p; } + +void +Processor::set_owner (SessionObject* o) +{ + _owner = o; +} + +SessionObject* +Processor::owner() const +{ + return _owner; +} diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index d0b2260c3d..f6af17b1b8 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -149,6 +149,7 @@ Route::init () */ _meter.reset (new PeakMeter (_session, _name)); + _meter->set_owner (this); _meter->set_display_to_user (false); _meter->activate (); @@ -1011,6 +1012,7 @@ Route::add_processor (boost::shared_ptr processor, boost::shared_ptr< } _processors.insert (loc, processor); + processor->set_owner (this); // Set up processor list channels. This will set processor->[input|output]_streams(), // configure redirect ports properly, etc. @@ -1161,6 +1163,7 @@ Route::add_processors (const ProcessorList& others, boost::shared_ptr } _processors.insert (loc, *i); + (*i)->set_owner (this); if ((*i)->active()) { (*i)->activate (); @@ -2616,6 +2619,7 @@ Route::set_processor_state (const XMLNode& node) for (ProcessorList::const_iterator i = _processors.begin(); i != _processors.end(); ++i) { + (*i)->set_owner (this); (*i)->ActiveChanged.connect_same_thread (*this, boost::bind (&Session::update_latency_compensation, &_session, false)); boost::shared_ptr pi;