From 36f1e2ea3d2c7d20d8fa267a3a66438044e99e8e Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 18 Jun 2006 19:26:53 +0000 Subject: 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 --- src/libs/engine/NodeBase.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/libs/engine/NodeBase.cpp') 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()), _dependants(new List()) { + 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* 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)); -- cgit v1.2.1