summaryrefslogtreecommitdiffstats
path: root/src/engine/BufferFactory.hpp
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/BufferFactory.hpp
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/BufferFactory.hpp')
-rw-r--r--src/engine/BufferFactory.hpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/engine/BufferFactory.hpp b/src/engine/BufferFactory.hpp
index 1978e895..44213c52 100644
--- a/src/engine/BufferFactory.hpp
+++ b/src/engine/BufferFactory.hpp
@@ -24,6 +24,7 @@
#include "glibmm/thread.h"
#include "raul/RingBuffer.hpp"
#include "raul/AtomicPtr.hpp"
+#include "types.hpp"
namespace Ingen {
@@ -40,10 +41,16 @@ public:
typedef boost::intrusive_ptr<Buffer> Ref;
+ static size_t audio_buffer_size(SampleCount nframes);
+ size_t default_buffer_size(PortType type);
+
Ref get(Shared::PortType type, size_t size=0, bool force_create=false);
+ Ref silent_buffer() { return _silent_buffer; }
+
+ void set_block_length(SampleCount block_length);
+
private:
- friend class BufferDeleter;
friend class Buffer;
void recycle(Buffer* buf);
@@ -68,6 +75,8 @@ private:
Glib::Mutex _mutex;
Engine& _engine;
SharedPtr<Shared::LV2URIMap> _map;
+
+ Ref _silent_buffer;
};
} // namespace Ingen