Browse Source

Reset all LV2 event buffers after a split cycle

Fixes #438
tags/1.9.7
falkTX 7 years ago
parent
commit
15e4192cb5
1 changed files with 33 additions and 15 deletions
  1. +33
    -15
      source/backend/plugin/CarlaPluginLV2.cpp

+ 33
- 15
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -3034,28 +3034,46 @@ public:
else
nextBankId = 0;

// reset iters
const uint32_t j = fEventsIn.ctrlIndex;

if (fEventsIn.ctrl->type & CARLA_EVENT_DATA_ATOM)
{
lv2_atom_buffer_reset(fEventsIn.data[j].atom, true);
lv2_atom_buffer_begin(&evInAtomIters[j], fEventsIn.data[j].atom);
}
else if (fEventsIn.ctrl->type & CARLA_EVENT_DATA_EVENT)
for (uint32_t j=0; j < fEventsIn.count; ++j)
{
lv2_event_buffer_reset(fEventsIn.data[j].event, LV2_EVENT_AUDIO_STAMP, fEventsIn.data[j].event->data);
lv2_event_begin(&evInEventIters[j], fEventsIn.data[j].event);
if (fEventsIn.data[j].type & CARLA_EVENT_DATA_ATOM)
{
lv2_atom_buffer_reset(fEventsIn.data[j].atom, true);
lv2_atom_buffer_begin(&evInAtomIters[j], fEventsIn.data[j].atom);
}
else if (fEventsIn.data[j].type & CARLA_EVENT_DATA_EVENT)
{
lv2_event_buffer_reset(fEventsIn.data[j].event, LV2_EVENT_AUDIO_STAMP, fEventsIn.data[j].event->data);
lv2_event_begin(&evInEventIters[j], fEventsIn.data[j].event);
}
else if (fEventsIn.data[j].type & CARLA_EVENT_DATA_MIDI_LL)
{
fEventsIn.data[j].midi.event_count = 0;
fEventsIn.data[j].midi.size = 0;
evInMidiStates[j].position = event.time;
}
}
else if (fEventsIn.ctrl->type & CARLA_EVENT_DATA_MIDI_LL)

for (uint32_t j=0; j < fEventsOut.count; ++j)
{
fEventsIn.data[j].midi.event_count = 0;
fEventsIn.data[j].midi.size = 0;
evInMidiStates[j].position = event.time;
if (fEventsOut.data[j].type & CARLA_EVENT_DATA_ATOM)
{
lv2_atom_buffer_reset(fEventsOut.data[j].atom, false);
}
else if (fEventsOut.data[j].type & CARLA_EVENT_DATA_EVENT)
{
lv2_event_buffer_reset(fEventsOut.data[j].event, LV2_EVENT_AUDIO_STAMP, fEventsOut.data[j].event->data);
}
else if (fEventsOut.data[j].type & CARLA_EVENT_DATA_MIDI_LL)
{
// not needed
}
}
}
else
{
startTime += timeOffset;
}
}

switch (event.type)


Loading…
Cancel
Save