summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2014-04-12 19:59:17 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2014-04-12 19:59:17 +0200
commitaa8599e808008a14ac0f7d40f91dc2e05bd3bd0a (patch)
treeb95e724eb81a407569c5a77a486e2aea3595fcd4 /src
parent68247258548efd9db16b2542122a980a1ff9e03d (diff)
Make engine ask output module for buffer size. Use this new feature to adapt internal buffers to buffer size reported by jack.
Diffstat (limited to 'src')
-rw-r--r--src/audiooutputengine.h5
-rw-r--r--src/drumgizmo.cc10
2 files changed, 11 insertions, 4 deletions
diff --git a/src/audiooutputengine.h b/src/audiooutputengine.h
index 8b2b768..7f15e49 100644
--- a/src/audiooutputengine.h
+++ b/src/audiooutputengine.h
@@ -50,6 +50,11 @@ public:
// Reimplement this if you wish to use internal buffer directly.
virtual sample_t *getBuffer(int ch) { return NULL; }
+
+ /*
+ * Overload this method to force engine to use different buffer size.
+ */
+ virtual size_t getBufferSize() { return 1024; }
};
#endif/*__DRUMGIZMO_AUDIOOUTPUTENGINE_H__*/
diff --git a/src/drumgizmo.cc b/src/drumgizmo.cc
index 4bd6a77..5d67c86 100644
--- a/src/drumgizmo.cc
+++ b/src/drumgizmo.cc
@@ -284,13 +284,13 @@ bool DrumGizmo::run(size_t pos, sample_t *samples, size_t nsamples)
void DrumGizmo::run(int endpos)
{
+ size_t pos = 0;
+ size_t nsamples = oe->getBufferSize();
+ sample_t *samples = (sample_t *)malloc(nsamples * sizeof(sample_t));
+
ie->start();
oe->start();
- size_t pos = 0;
- size_t nsamples = 128;//1024;
- sample_t samples[nsamples];
-
while(run(pos, samples, nsamples) == true) {
pos += nsamples;
if(endpos != -1 && pos >= (size_t)endpos) break;
@@ -298,6 +298,8 @@ void DrumGizmo::run(int endpos)
ie->stop();
oe->stop();
+
+ free(samples);
}
#ifdef SSE