summaryrefslogtreecommitdiffstats
path: root/src/server/BufferFactory.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-08-08 00:15:43 +0000
committerDavid Robillard <d@drobilla.net>2012-08-08 00:15:43 +0000
commite8e6c94ebe95d6d7fd48cea1c383d749272e7662 (patch)
tree9b796623e468078fcfe66a9d1006c36e3ae1587c /src/server/BufferFactory.cpp
parentd51aa827c7411fdf88a7645d80c1fb0c447ab838 (diff)
downloadingen-e8e6c94ebe95d6d7fd48cea1c383d749272e7662.tar.gz
ingen-e8e6c94ebe95d6d7fd48cea1c383d749272e7662.tar.bz2
ingen-e8e6c94ebe95d6d7fd48cea1c383d749272e7662.zip
Support latest LV2 buf-size extension.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@4623 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/server/BufferFactory.cpp')
-rw-r--r--src/server/BufferFactory.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/server/BufferFactory.cpp b/src/server/BufferFactory.cpp
index 720a4639..ccb3170d 100644
--- a/src/server/BufferFactory.cpp
+++ b/src/server/BufferFactory.cpp
@@ -24,11 +24,10 @@
namespace Ingen {
namespace Server {
-static const size_t EVENT_BYTES_PER_FRAME = 4; // FIXME
-
BufferFactory::BufferFactory(Engine& engine, URIs& uris)
: _engine(engine)
, _uris(uris)
+ , _seq_size(0)
, _silent_buffer(NULL)
{
}
@@ -72,12 +71,17 @@ BufferFactory::audio_buffer_size(SampleCount nframes)
uint32_t
BufferFactory::default_size(LV2_URID type) const
{
+ static const uint32_t SEQ_BYTES_PER_FRAME = 4;
if (type == _uris.atom_Float) {
return sizeof(LV2_Atom_Float);
} else if (type == _uris.atom_Sound) {
return audio_buffer_size(_engine.driver()->block_length());
} else if (type == _uris.atom_Sequence) {
- return _engine.driver()->block_length() * EVENT_BYTES_PER_FRAME;
+ if (_seq_size == 0) {
+ return _engine.driver()->block_length() * SEQ_BYTES_PER_FRAME;
+ } else {
+ return _seq_size;
+ }
} else {
return 0;
}