Browse Source

Fix crash on close, do not setup worker threads

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.02
falkTX 3 years ago
parent
commit
86fbd84cf6
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 29 additions and 4 deletions
  1. +11
    -0
      lv2export/test.cpp
  2. +14
    -1
      src/CardinalPlugin.cpp
  3. +4
    -3
      src/CardinalUI.cpp

+ 11
- 0
lv2export/test.cpp View File

@@ -108,5 +108,16 @@ int main()
i+1, q->name.c_str(), q->getDescription().c_str(), q->unit.c_str(),
q->minValue, q->maxValue, q->defaultValue);
}

Module::ProcessArgs args = {
48000.0f,
1.0f / 48000.0f,
0
};
for (int i=0; i<96000; ++i)
{
module->process(args);
++args.frame;
}
return 0;
}

+ 14
- 1
src/CardinalPlugin.cpp View File

@@ -94,7 +94,7 @@ struct Initializer
#ifdef __MOD_DEVICES__
settings::threadCount = 3;
#else
settings::threadCount = 1;
settings::threadCount = 0;
#endif
system::init();
@@ -768,7 +768,10 @@ protected:
const MutexLocker cml(fDeviceMutex);
if (fCurrentAudioDevice != nullptr)
{
rack::contextSet(context);
fCurrentAudioDevice->onStartStream();
}
}
}
@@ -778,7 +781,10 @@ protected:
const MutexLocker cml(fDeviceMutex);
if (fCurrentAudioDevice != nullptr)
{
rack::contextSet(context);
fCurrentAudioDevice->onStopStream();
}
}
delete[] fAudioBufferOut;
@@ -866,6 +872,13 @@ protected:
}
}
void sampleRateChanged(const double newSampleRate) override
{
rack::contextSet(context);
rack::settings::sampleRate = newSampleRate;
context->engine->setSampleRate(newSampleRate);
}
// -------------------------------------------------------------------------------------------------------
private:


+ 4
- 3
src/CardinalUI.cpp View File

@@ -129,10 +129,12 @@ public:

~CardinalUI() override
{
const ScopedContext sc(this);
rack::contextSet(fContext);

delete fContext->window;
fContext->window = nullptr;

rack::contextSet(nullptr);
}

void onNanoDisplay() override
@@ -513,9 +515,8 @@ protected:
if (filename == nullptr)
return;

// we cannot lock here
// const ScopedContext sc(this);
rack::contextSet(fContext);
WindowParametersRestore(fContext->window);
fContext->patch->loadAction(filename);
}



Loading…
Cancel
Save