Browse Source

TESTING: Give up on our own context mutex

tags/22.02
falkTX 4 years ago
parent
commit
f34b820000
4 changed files with 15 additions and 32 deletions
  1. +1
    -2
      plugins/Cardinal/src/plugincontext.hpp
  2. +3
    -11
      src/CardinalPlugin.cpp
  3. +11
    -17
      src/CardinalUI.cpp
  4. +0
    -2
      src/PluginContext.hpp

+ 1
- 2
plugins/Cardinal/src/plugincontext.hpp View File

@@ -18,7 +18,7 @@
#pragma once

#include "plugin.hpp"
#include "../dpf/distrho/extra/Mutex.hpp"
#include "DistrhoUtils.hpp"

// -----------------------------------------------------------------------------------------------------------
// from PluginContext.hpp
@@ -36,7 +36,6 @@ struct CardinalPluginContext : rack::Context {
bool playing, frameZero;
int32_t bar, beat, beatsPerBar;
double tick, ticksPerBeat, ticksPerFrame;
Mutex mutex;
Plugin* const plugin;
CardinalPluginContext(Plugin* const p);
};


+ 3
- 11
src/CardinalPlugin.cpp View File

@@ -261,7 +261,6 @@ struct Initializer
std::vector<uint8_t> data(size);
std::memcpy(data.data(), blob, size);
const MutexLocker cml(context->mutex);
rack::contextSet(context);
rack::system::removeRecursively(context->patch->autosavePath);
rack::system::createDirectories(context->patch->autosavePath);
@@ -287,10 +286,7 @@ struct Initializer
// -----------------------------------------------------------------------------------------------------------
struct ScopedContext {
const MutexLocker cml;
ScopedContext(const CardinalBasePlugin* const plugin)
: cml(plugin->context->mutex)
{
rack::contextSet(plugin->context);
}
@@ -400,15 +396,11 @@ public:
fInitializer->oscPlugin = nullptr;
#endif
{
const MutexLocker cml(context->mutex);
rack::contextSet(context);
rack::contextSet(context);
#if defined(__MOD_DEVICES__) && !defined(HEADLESS)
delete context->window;
context->window = nullptr;
delete context->window;
context->window = nullptr;
#endif
}
delete context;
rack::contextSet(nullptr);


+ 11
- 17
src/CardinalUI.cpp View File

@@ -68,19 +68,16 @@ class CardinalUI : public UI,

struct ScopedContext {
CardinalPluginContext* const context;
const MutexLocker cml;

ScopedContext(CardinalUI* const ui)
: context(ui->fContext),
cml(context->mutex)
: context(ui->fContext)
{
rack::contextSet(context);
WindowParametersRestore(context->window);
}

ScopedContext(CardinalUI* const ui, const int mods)
: context(ui->fContext),
cml(context->mutex)
: context(ui->fContext)
{
rack::contextSet(context);
rack::window::WindowMods(context->window, mods);
@@ -112,23 +109,20 @@ public:
rack::window::Window* const window = new rack::window::Window;
rack::window::WindowInit(window, this);

{
const MutexLocker cml(fContext->mutex);
rack::contextSet(fContext);
rack::contextSet(fContext);

fContext->scene->removeChild(fContext->scene->menuBar);
fContext->scene->menuBar = rack::app::createMenuBar(getWindow(), getApp().isStandalone());
fContext->scene->addChildBelow(fContext->scene->menuBar, fContext->scene->rackScroll);
fContext->scene->removeChild(fContext->scene->menuBar);
fContext->scene->menuBar = rack::app::createMenuBar(getWindow(), getApp().isStandalone());
fContext->scene->addChildBelow(fContext->scene->menuBar, fContext->scene->rackScroll);

fContext->window = window;
fContext->window = window;

rack::widget::Widget::ContextCreateEvent e;
fContext->scene->onContextCreate(e);
rack::widget::Widget::ContextCreateEvent e;
fContext->scene->onContextCreate(e);

window->step();
window->step();

rack::contextSet(nullptr);
}
rack::contextSet(nullptr);

WindowParametersSetCallback(window, this);
}


+ 0
- 2
src/PluginContext.hpp View File

@@ -43,8 +43,6 @@ struct CardinalPluginContext : rack::Context {
bool playing, frameZero;
int32_t bar, beat, beatsPerBar;
double tick, ticksPerBeat, ticksPerFrame;

Mutex mutex;
Plugin* const plugin;

CardinalPluginContext(Plugin* const p)


Loading…
Cancel
Save