Browse Source

use a global mutex to ensure bridge environment is correct

tags/1.9.4
falkTX 10 years ago
parent
commit
28a0c5ea52
1 changed files with 11 additions and 9 deletions
  1. +11
    -9
      source/backend/plugin/CarlaPluginThread.cpp

+ 11
- 9
source/backend/plugin/CarlaPluginThread.cpp View File

@@ -125,6 +125,7 @@ void CarlaPluginThread::run()
switch (fMode) switch (fMode)
{ {
case PLUGIN_THREAD_NULL: case PLUGIN_THREAD_NULL:
case PLUGIN_THREAD_BRIDGE:
break; break;


case PLUGIN_THREAD_DSSI_GUI: case PLUGIN_THREAD_DSSI_GUI:
@@ -134,9 +135,6 @@ void CarlaPluginThread::run()
fProcess->kill(); fProcess->kill();
fProcess = nullptr; fProcess = nullptr;
return; return;

case PLUGIN_THREAD_BRIDGE:
break;
} }
} }


@@ -157,6 +155,9 @@ void CarlaPluginThread::run()


arguments.add(fBinary.buffer()); arguments.add(fBinary.buffer());


// use a global mutex to ensure bridge environment is correct
static CarlaMutex sEnvMutex;

switch (fMode) switch (fMode)
{ {
case PLUGIN_THREAD_NULL: case PLUGIN_THREAD_NULL:
@@ -183,18 +184,18 @@ void CarlaPluginThread::run()
break; break;


case PLUGIN_THREAD_BRIDGE: case PLUGIN_THREAD_BRIDGE:
// FIXME
carla_setenv("ENGINE_BRIDGE_SHM_IDS", fExtra2.buffer());
carla_setenv("ENGINE_BRIDGE_CLIENT_NAME", name.toRawUTF8());
carla_setenv("ENGINE_BRIDGE_OSC_URL", String(String(fEngine->getOscServerPathUDP()) + String("/") + String(fPlugin->getId())).toRawUTF8());
carla_setenv("WINEDEBUG", "-all");

/* osc-url */ arguments.add(String(fEngine->getOscServerPathUDP()) + String("/") + String(fPlugin->getId())); /* osc-url */ arguments.add(String(fEngine->getOscServerPathUDP()) + String("/") + String(fPlugin->getId()));
/* stype */ arguments.add(fExtra1.buffer()); /* stype */ arguments.add(fExtra1.buffer());
/* filename */ arguments.add(fPlugin->getFilename()); /* filename */ arguments.add(fPlugin->getFilename());
/* name */ arguments.add(name); /* name */ arguments.add(name);
/* label */ arguments.add(fLabel.buffer()); /* label */ arguments.add(fLabel.buffer());
/* uniqueId */ arguments.add(String(static_cast<juce::int64>(fPlugin->getUniqueId()))); /* uniqueId */ arguments.add(String(static_cast<juce::int64>(fPlugin->getUniqueId())));

sEnvMutex.lock();
carla_setenv("ENGINE_BRIDGE_SHM_IDS", fExtra2.buffer());
carla_setenv("ENGINE_BRIDGE_CLIENT_NAME", name.toRawUTF8());
carla_setenv("ENGINE_BRIDGE_OSC_URL", String(String(fEngine->getOscServerPathUDP()) + String("/") + String(fPlugin->getId())).toRawUTF8());
carla_setenv("WINEDEBUG", "-all");
break; break;
} }


@@ -249,6 +250,7 @@ void CarlaPluginThread::run()
break; break;


case PLUGIN_THREAD_BRIDGE: case PLUGIN_THREAD_BRIDGE:
sEnvMutex.unlock();
//fProcess->waitForFinished(-1); //fProcess->waitForFinished(-1);


while (fProcess->isRunning() && ! shouldThreadExit()) while (fProcess->isRunning() && ! shouldThreadExit())


Loading…
Cancel
Save