From 8bf529bb24c03ebdce884cf9a4288812bb9b2cd5 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 20 Mar 2017 02:50:00 +0100 Subject: Fix value buffer update --- src/server/Buffer.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/server/Buffer.cpp') diff --git a/src/server/Buffer.cpp b/src/server/Buffer.cpp index 7af3d47e..fb7efa85 100644 --- a/src/server/Buffer.cpp +++ b/src/server/Buffer.cpp @@ -421,15 +421,21 @@ Buffer::update_value_buffer(SampleCount offset) return; } - LV2_Atom_Sequence* seq = get(); + LV2_Atom_Sequence* seq = get(); + LV2_Atom_Event* latest = NULL; LV2_ATOM_SEQUENCE_FOREACH(seq, ev) { - if (ev->time.frames <= offset && ev->body.type == _value_type) { - memcpy(_value_buffer->get(), - &ev->body, - lv2_atom_total_size(&ev->body)); + if (ev->time.frames > offset) { break; + } else if (ev->body.type == _value_type) { + latest = ev; } } + + if (latest) { + memcpy(_value_buffer->get(), + &latest->body, + lv2_atom_total_size(&latest->body)); + } } #ifndef NDEBUG -- cgit v1.2.1