summaryrefslogtreecommitdiffstats
path: root/src/server/ingen_lv2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/ingen_lv2.cpp')
-rw-r--r--src/server/ingen_lv2.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/server/ingen_lv2.cpp b/src/server/ingen_lv2.cpp
index c9c6907e..a4cd4247 100644
--- a/src/server/ingen_lv2.cpp
+++ b/src/server/ingen_lv2.cpp
@@ -101,9 +101,17 @@ public:
AudioBuffer* patch_buf = (AudioBuffer*)_patch_port->buffer(0).get();
patch_buf->copy((Sample*)_buffer, 0, context.nframes() - 1);
} else {
- LV2_Atom_Sequence* seq = (LV2_Atom_Sequence*)_buffer;
- bool enqueued = false;
+ LV2_Atom_Sequence* seq = (LV2_Atom_Sequence*)_buffer;
+ bool enqueued = false;
+ Buffer* patch_buf = _patch_port->buffer(0).get();
+ patch_buf->prepare_write(context);
LV2_ATOM_SEQUENCE_FOREACH(seq, ev) {
+ if (!patch_buf->append_event(
+ ev->time.frames, ev->body.size, ev->body.type,
+ (const uint8_t*)LV2_ATOM_BODY(&ev->body))) {
+ Raul::warn("Failed to write to MIDI buffer, events lost!\n");
+ }
+
// TODO: Only enqueue appropriate atoms
enqueue_message(context, _driver, &ev->body);
enqueued = true;