From 93b1649792d8aabdc858fdc957682c0e906ee714 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 12 Mar 2022 20:47:59 +0000 Subject: [PATCH] Setup Carla paths for Windows Signed-off-by: falkTX --- plugins/Cardinal/src/Carla.cpp | 15 ++++++++++++--- plugins/Cardinal/src/Ildaeil.cpp | 10 +++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/plugins/Cardinal/src/Carla.cpp b/plugins/Cardinal/src/Carla.cpp index cdd3256..f5d726f 100644 --- a/plugins/Cardinal/src/Carla.cpp +++ b/plugins/Cardinal/src/Carla.cpp @@ -99,6 +99,11 @@ struct CarlaModule : Module { CardinalExpanderFromCarlaMIDIToCV* midiOutExpander = nullptr; std::string patchStorage; +#ifdef CARLA_OS_WIN + // must keep string pointer valid + std::string winResourceDir; +#endif + CarlaModule() : pcontext(static_cast(APP)) { @@ -138,10 +143,14 @@ struct CarlaModule : Module { binaryDir = "/Applications/Carla.app/Contents/MacOS"; resourceDir = "/Applications/Carla.app/Contents/MacOS/resources"; } -#elif defined(CARLA_OS_WINDOWS) - // Carla does not support system-wide install on Windows right now - if (false) +#elif defined(CARLA_OS_WIN) + const std::string winBinaryDir = system::join(asset::systemDir, "Carla"); + + if (system::exists(winBinaryDir)) { + winResourceDir = system::join(winBinaryDir, "resources"); + binaryDir = winBinaryDir.c_str(); + resourceDir = winResourceDir.c_str(); } #else if (system::exists("/usr/local/lib/carla")) diff --git a/plugins/Cardinal/src/Ildaeil.cpp b/plugins/Cardinal/src/Ildaeil.cpp index b7d1039..3417242 100644 --- a/plugins/Cardinal/src/Ildaeil.cpp +++ b/plugins/Cardinal/src/Ildaeil.cpp @@ -209,10 +209,14 @@ struct IldaeilModule : Module { carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, "/Applications/Carla.app/Contents/MacOS"); carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, "/Applications/Carla.app/Contents/MacOS/resources"); } -#elif defined(CARLA_OS_WINDOWS) - // Carla does not support system-wide install on Windows right now - if (false) +#elif defined(CARLA_OS_WIN) + const std::string winBinaryDir = system::join(asset::systemDir, "Carla"); + + if (system::exists(winBinaryDir)) { + const std::string winResourceDir = system::join(winBinaryDir, "resources"); + carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, winBinaryDir.c_str()); + carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, winResourceDir.c_str()); } #else if (system::exists("/usr/local/lib/carla"))