diff options
author | David Robillard <d@drobilla.net> | 2006-06-18 19:26:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-06-18 19:26:53 +0000 |
commit | 36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e (patch) | |
tree | 963d5a6d87204fda9d8b1cd91f8810a6582bb41f /src/libs/engine/NodeBase.cpp | |
parent | 00c8938a79d9e24547420d2a39421bcb7d8cc165 (diff) | |
download | ingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.tar.gz ingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.tar.bz2 ingen-36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e.zip |
Reworked use of Plugin class in engine slightly (more RAII-ey)
git-svn-id: http://svn.drobilla.net/lad/grauph@56 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/libs/engine/NodeBase.cpp')
-rw-r--r-- | src/libs/engine/NodeBase.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/libs/engine/NodeBase.cpp b/src/libs/engine/NodeBase.cpp index 4eeada15..a5f23e84 100644 --- a/src/libs/engine/NodeBase.cpp +++ b/src/libs/engine/NodeBase.cpp @@ -34,18 +34,19 @@ using std::cout; using std::cerr; using std::endl; namespace Om { -NodeBase::NodeBase(const string& name, size_t poly, Patch* parent, samplerate srate, size_t buffer_size) +NodeBase::NodeBase(const Plugin* plugin, const string& name, size_t poly, Patch* parent, samplerate srate, size_t buffer_size) : Node(parent, name), + _plugin(plugin), _poly(poly), _srate(srate), _buffer_size(buffer_size), _activated(false), - _num_ports(0), _ports(NULL), _traversed(false), _providers(new List<Node*>()), _dependants(new List<Node*>()) { + assert(_plugin); assert(_poly > 0); assert(_parent == NULL || (_poly == parent->internal_poly() || _poly == 1)); } @@ -58,7 +59,7 @@ NodeBase::~NodeBase() delete _providers; delete _dependants; - for (size_t i=0; i < _num_ports; ++i) + for (size_t i=0; i < num_ports(); ++i) delete _ports->at(i); } @@ -108,7 +109,7 @@ NodeBase::remove_from_store() } // Remove ports - for (size_t i=0; i < _num_ports; ++i) { + for (size_t i=0; i < num_ports(); ++i) { node = om->object_store()->remove(_ports->at(i)->path()); if (node != NULL) { assert(om->object_store()->find(_ports->at(i)->path()) == NULL); @@ -125,11 +126,8 @@ NodeBase::run(size_t nframes) { assert(_activated); // Mix down any ports with multiple inputs - Port* p; - for (size_t i=0; i < _ports->size(); ++i) { - p = _ports->at(i); - p->prepare_buffers(nframes); - } + for (size_t i=0; i < _ports->size(); ++i) + _ports->at(i)->prepare_buffers(nframes); } @@ -147,7 +145,7 @@ NodeBase::set_path(const Path& new_path) TreeNode<OmObject*>* treenode = NULL; // Reinsert ports - for (size_t i=0; i < _num_ports; ++i) { + for (size_t i=0; i < num_ports(); ++i) { treenode = om->object_store()->remove(old_path +"/"+ _ports->at(i)->name()); assert(treenode != NULL); assert(treenode->node() == _ports->at(i)); |