13
0

add a back-pointer to the owner of a Processor

Use SessionObject* rather than Route so that per-region plugins will be possible in the future.
This commit is contained in:
Paul Davis 2013-10-14 11:12:50 -04:00
parent a244075fb3
commit d9058499af
3 changed files with 20 additions and 0 deletions

View File

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

View File

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

View File

@ -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> 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<Processor>
}
_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<PluginInsert> pi;