summaryrefslogtreecommitdiffstats
path: root/src/engine/DuplexPort.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-02-20 21:52:36 +0000
committerDavid Robillard <d@drobilla.net>2010-02-20 21:52:36 +0000
commit46e5de590817756b21a7a5d99bd4963df343f455 (patch)
tree7d7b3b63297b24d84e5b42cc8aeb22d4212738b5 /src/engine/DuplexPort.cpp
parentb96a4015ae39b5bdd9afbd82898c0168a0a8e613 (diff)
downloadingen-46e5de590817756b21a7a5d99bd4963df343f455.tar.gz
ingen-46e5de590817756b21a7a5d99bd4963df343f455.tar.bz2
ingen-46e5de590817756b21a7a5d99bd4963df343f455.zip
Heavy overhaul of buffer management and polyphony.
* Working polyphony when nodes are instantiated at desired polyphony level (dynamic still doesn't work) * Use shared silent buffer for disconnected audio inputs (save memory) * Eliminate redundant patch compiling on delete and disconnect-all events that have child events * Fix a ton of crash bugs and other issues I've since forgotten git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@2468 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/DuplexPort.cpp')
-rw-r--r--src/engine/DuplexPort.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/engine/DuplexPort.cpp b/src/engine/DuplexPort.cpp
index 775e82b3..1e23b5b5 100644
--- a/src/engine/DuplexPort.cpp
+++ b/src/engine/DuplexPort.cpp
@@ -17,6 +17,7 @@
#include <cstdlib>
#include <cassert>
+#include "shared/LV2URIMap.hpp"
#include "util.hpp"
#include "DuplexPort.hpp"
#include "ConnectionImpl.hpp"
@@ -37,6 +38,7 @@ DuplexPort::DuplexPort(
NodeImpl* parent,
const string& name,
uint32_t index,
+ bool polyphonic,
uint32_t poly,
PortType type,
const Raul::Atom& value,
@@ -48,6 +50,17 @@ DuplexPort::DuplexPort(
, _is_output(is_output)
{
assert(PortImpl::_parent == parent);
+ set_property(Shared::LV2URIMap::instance().ingen_polyphonic, polyphonic);
+}
+
+
+void
+DuplexPort::get_buffers(BufferFactory& bufs, Raul::Array<BufferFactory::Ref>* buffers, uint32_t poly)
+{
+ if (_is_output)
+ return InputPort::get_buffers(bufs, buffers, poly);
+ else
+ return OutputPort::get_buffers(bufs, buffers, poly);
}