Browse Source

Cleanup

tags/1.9.6
falkTX 11 years ago
parent
commit
ea46baec24
1 changed files with 17 additions and 38 deletions
  1. +17
    -38
      source/backend/plugin/CarlaPluginDSSI.cpp

+ 17
- 38
source/backend/plugin/CarlaPluginDSSI.cpp View File

@@ -26,6 +26,7 @@


#ifdef HAVE_LIBLO #ifdef HAVE_LIBLO
# include "CarlaOscUtils.hpp" # include "CarlaOscUtils.hpp"
# include "CarlaPipeUtils.hpp"
# include "CarlaThread.hpp" # include "CarlaThread.hpp"
#endif #endif


@@ -146,55 +147,33 @@ public:


{ {
#ifdef CARLA_OS_LINUX #ifdef CARLA_OS_LINUX
const ScopedEngineEnvironmentLocker _seel(kEngine);
/*
* If the frontend uses winId parent, set LD_PRELOAD to auto-map the DSSI UI.
* If not, unset LD_PRELOAD.
*/
const uintptr_t winId(kEngine->getOptions().frontendWinId);


// get current LD_PRELOAD, will restore it later
const char* const oldPreload(std::getenv("LD_PRELOAD"));
// for CARLA_ENGINE_OPTION_FRONTEND_WIN_ID
char winIdStr[STR_MAX+1];
winIdStr[STR_MAX] = '\0';


# ifdef HAVE_X11
// if the frontend uses winId parent, set LD_PRELOAD to auto-map the DSSI UI
const uintptr_t winId = kEngine->getOptions().frontendWinId;
// for LD_PRELOAD
CarlaString ldPreloadValue;


if (winId != 0) if (winId != 0)
{ {
char strBuf[STR_MAX+1];
strBuf[STR_MAX] = '\0';
std::snprintf(strBuf, STR_MAX, P_UINTPTR, kEngine->getOptions().frontendWinId);
::setenv("CARLA_ENGINE_OPTION_FRONTEND_WIN_ID", strBuf, 1);

CarlaString interposerPath(CarlaString(kEngine->getOptions().binaryDir) +
CARLA_OS_SEP_STR "libcarla_interposer-x11.so");
::setenv("LD_PRELOAD", interposerPath.buffer(), 1);
std::snprintf(winIdStr, STR_MAX, P_UINTPTR, kEngine->getOptions().frontendWinId);
ldPreloadValue = (CarlaString(kEngine->getOptions().binaryDir) + CARLA_OS_SEP_STR "libcarla_interposer-x11.so");
} }
else
# else
// if no X11 or winId set, simply unset LD_PRELOAD
// (it might be set to libcarla_interposer-safe)
if (oldPreload != nullptr)
::unsetenv("LD_PRELOAD");
# endif

const ScopedEngineEnvironmentLocker _seel(kEngine);
const ScopedEnvVar _sev1("CARLA_ENGINE_OPTION_FRONTEND_WIN_ID", winIdStr[0] != '\0' ? winIdStr : nullptr);
const ScopedEnvVar _sev2("LD_PRELOAD", ldPreloadValue.isNotEmpty() ? ldPreloadValue.buffer() : nullptr);
#endif // CARLA_OS_LINUX #endif // CARLA_OS_LINUX


// start the DSSI UI application // start the DSSI UI application
carla_stdout("starting DSSI UI..."); carla_stdout("starting DSSI UI...");
started = fProcess->start(arguments); started = fProcess->start(arguments);

#ifdef CARLA_OS_LINUX
// restore initial state
if (oldPreload != nullptr)
{
::setenv("LD_PRELOAD", oldPreload, 1);
}
# ifdef HAVE_X11
if (winId != 0)
{
::unsetenv("CARLA_ENGINE_OPTION_FRONTEND_WIN_ID");

if (oldPreload == nullptr)
::unsetenv("LD_PRELOAD");
}
# endif
#endif // CARLA_OS_LINUX
} }


if (! started) if (! started)


Loading…
Cancel
Save