lv2export: Make sure to keep context valid during RT

This commit is contained in:
falkTX 2021-12-08 15:22:44 +00:00
parent 5194a48628
commit 6c7f478515
3 changed files with 19 additions and 7 deletions

View file

@ -87,6 +87,7 @@ std::vector<Plugin*> plugins;
} // namespace rack
struct PluginLv2 {
Context* context;
Plugin* plugin;
engine::Module* module;
float sampleRate;
@ -97,7 +98,7 @@ struct PluginLv2 {
PluginLv2(double sr)
{
// FIXME shared instance for these 2
Context* const context = new Context;
context = new Context;
context->engine = new Engine;
context->engine->internal->sampleRate = sr;
contextSet(context);
@ -126,12 +127,14 @@ struct PluginLv2 {
PluginLv2()
{
contextSet(context);
delete[] ports;
delete module;
// FIXME shared instance for this
delete plugin;
delete contextGet();
delete context;
}
void lv2_connect_port(const uint32_t port, void* const dataLocation)
@ -141,6 +144,7 @@ struct PluginLv2 {
void lv2_activate()
{
contextSet(context);
module->onReset();
}
@ -149,6 +153,8 @@ struct PluginLv2 {
if (sampleCount == 0)
return;
contextSet(context);
Module::ProcessArgs args = {
sampleRate,
1.0f / sampleRate,