diff options
author | David Robillard <d@drobilla.net> | 2010-02-20 21:52:36 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2010-02-20 21:52:36 +0000 |
commit | 46e5de590817756b21a7a5d99bd4963df343f455 (patch) | |
tree | 7d7b3b63297b24d84e5b42cc8aeb22d4212738b5 /src/engine/DuplexPort.cpp | |
parent | b96a4015ae39b5bdd9afbd82898c0168a0a8e613 (diff) | |
download | ingen-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.cpp | 13 |
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); } |