Browse Source

Update carla and dpf, do the same changes as in Cardinal side

Signed-off-by: falkTX <falktx@falktx.com>
main
falkTX 5 months ago
parent
commit
338f46a7f2
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
7 changed files with 209 additions and 21 deletions
  1. +1
    -0
      Makefile
  2. +1
    -1
      carla
  3. +1
    -1
      dpf
  4. +1
    -1
      plugins/Common/IldaeilBasePlugin.hpp
  5. +57
    -8
      plugins/Common/IldaeilPlugin.cpp
  6. +140
    -9
      plugins/Common/IldaeilUI.cpp
  7. +8
    -1
      plugins/Standalone/macOS/Info.plist

+ 1
- 0
Makefile View File

@@ -8,6 +8,7 @@ include dpf/Makefile.base.mk

# also set in:
# plugins/Common/IldaeilPlugin.cpp `getVersion`
# plugins/Standalone/macOS/Info.plist
VERSION = 1.3

# ---------------------------------------------------------------------------------------------------------------------


+ 1
- 1
carla

@@ -1 +1 @@
Subproject commit be784fcbe29f9f7eb52298023dcbdb11c0b8604a
Subproject commit 9317df59709ae646f6e08a1e2c9834b4a0325101

+ 1
- 1
dpf

@@ -1 +1 @@
Subproject commit cb630fabcb059f35646ac4cacf011a25ffc3ff93
Subproject commit 018e45db4a40d57761f12e797093e3699b1ca5e3

+ 1
- 1
plugins/Common/IldaeilBasePlugin.hpp View File

@@ -41,7 +41,7 @@ public:
NativeHostDescriptor fCarlaHostDescriptor;
CarlaHostHandle fCarlaHostHandle;

String fDiscoveryTool;
String fBinaryPath;

void* fUI;



+ 57
- 8
plugins/Common/IldaeilPlugin.cpp View File

@@ -141,6 +141,25 @@ static const char* getPathForVST2()
path += water::File::getSpecialLocation(water::File::winCommonProgramFiles).getFullPathName() + "\\VST2";
#else
path = getHomePath() + "/.vst:/usr/lib/vst:/usr/local/lib/vst";
water::String winePrefix;
if (const char* const envWINEPREFIX = std::getenv("WINEPREFIX"))
winePrefix = envWINEPREFIX;
if (winePrefix.isEmpty())
winePrefix = getHomePath() + "/.wine";
if (water::File(winePrefix).exists())
{
path += ":" + winePrefix + "/drive_c/Program Files/Common Files/VST2";
path += ":" + winePrefix + "/drive_c/Program Files/VstPlugins";
path += ":" + winePrefix + "/drive_c/Program Files/Steinberg/VstPlugins";
#ifdef CARLA_OS_64BIT
path += ":" + winePrefix + "/drive_c/Program Files (x86)/Common Files/VST2";
path += ":" + winePrefix + "/drive_c/Program Files (x86)/VstPlugins";
path += ":" + winePrefix + "/drive_c/Program Files (x86)/Steinberg/VstPlugins";
#endif
}
#endif
}
@@ -164,6 +183,21 @@ static const char* getPathForVST3()
path += water::File::getSpecialLocation(water::File::winCommonProgramFiles).getFullPathName() + "\\VST3";
#else
path = getHomePath() + "/.vst3:/usr/lib/vst3:/usr/local/lib/vst3";
water::String winePrefix;
if (const char* const envWINEPREFIX = std::getenv("WINEPREFIX"))
winePrefix = envWINEPREFIX;
if (winePrefix.isEmpty())
winePrefix = getHomePath() + "/.wine";
if (water::File(winePrefix).exists())
{
path += ":" + winePrefix + "/drive_c/Program Files/Common Files/VST3";
#ifdef CARLA_OS_64BIT
path += ":" + winePrefix + "/drive_c/Program Files (x86)/Common Files/VST3";
#endif
}
#endif
}
@@ -187,6 +221,21 @@ static const char* getPathForCLAP()
path += water::File::getSpecialLocation(water::File::winCommonProgramFiles).getFullPathName() + "\\CLAP";
#else
path = getHomePath() + "/.clap:/usr/lib/clap:/usr/local/lib/clap";
water::String winePrefix;
if (const char* const envWINEPREFIX = std::getenv("WINEPREFIX"))
winePrefix = envWINEPREFIX;
if (winePrefix.isEmpty())
winePrefix = getHomePath() + "/.wine";
if (water::File(winePrefix).exists())
{
path += ":" + winePrefix + "/drive_c/Program Files/Common Files/CLAP";
#ifdef CARLA_OS_64BIT
path += ":" + winePrefix + "/drive_c/Program Files (x86)/Common Files/CLAP";
#endif
}
#endif
}
@@ -352,7 +401,7 @@ public:
if (bundlePath != nullptr
&& water::File(bundlePath + water::String(DISTRHO_OS_SEP_STR "carla-bridge-native" EXT)).existsAsFile())
{
fDiscoveryTool = bundlePath;
fBinaryPath = bundlePath;
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, bundlePath);
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, getResourcePath(bundlePath));
}
@@ -360,27 +409,27 @@ public:
else if (bundlePath != nullptr
&& water::File(bundlePath + water::String("/Contents/MacOS/carla-bridge-native" EXT)).existsAsFile())
{
fDiscoveryTool = bundlePath;
fDiscoveryTool += "/Contents/MacOS";
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, fDiscoveryTool);
fBinaryPath = bundlePath;
fBinaryPath += "/Contents/MacOS";
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, fBinaryPath);
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, getResourcePath(bundlePath));
}
#endif
else
{
#ifdef CARLA_OS_MAC
fDiscoveryTool = "/Applications/Carla.app/Contents/MacOS";
fBinaryPath = "/Applications/Carla.app/Contents/MacOS";
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");
#else
fDiscoveryTool = "/usr/lib/carla";
fBinaryPath = "/usr/lib/carla";
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_BINARIES, 0, "/usr/lib/carla");
carla_set_engine_option(fCarlaHostHandle, ENGINE_OPTION_PATH_RESOURCES, 0, "/usr/share/carla/resources");
#endif
}
carla_stdout("Using binary path: %s", fDiscoveryTool.buffer());
fDiscoveryTool += DISTRHO_OS_SEP_STR "carla-discovery-native" EXT;
if (fBinaryPath.isNotEmpty())
carla_stdout("Using binary path for discovery tools: %s", fBinaryPath.buffer());
#undef EXT


+ 140
- 9
plugins/Common/IldaeilUI.cpp View File

@@ -166,6 +166,7 @@ class IldaeilUI : public UI,
IldaeilBasePlugin* const fPlugin;
PluginHostWindow fPluginHostWindow;

BinaryType fBinaryType;
PluginType fPluginType;
PluginType fNextPluginType;
uint fPluginId;
@@ -174,6 +175,7 @@ class IldaeilUI : public UI,
bool fPluginHasEmbedUI;
bool fPluginHasFileOpen;
bool fPluginHasOutputParameters;
bool fPluginIsBridge;
bool fPluginRunning;
bool fPluginWillRunInBridgeMode;
Mutex fPluginsMutex;
@@ -185,7 +187,7 @@ class IldaeilUI : public UI,
bool fPluginSearchFirstShow;
char fPluginSearchString[0xff];

String fPopupError, fPluginFilename;
String fPopupError, fPluginFilename, fDiscoveryTool;
Size<uint> fNextSize;

struct RunnerData {
@@ -216,6 +218,7 @@ public:
fIdleState(kIdleInit),
fPlugin((IldaeilBasePlugin*)getPluginInstancePointer()),
fPluginHostWindow(getWindow(), this),
fBinaryType(BINARY_NATIVE),
fPluginType(PLUGIN_LV2),
fNextPluginType(fPluginType),
fPluginId(0),
@@ -224,6 +227,7 @@ public:
fPluginHasEmbedUI(false),
fPluginHasFileOpen(false),
fPluginHasOutputParameters(false),
fPluginIsBridge(false),
fPluginRunning(false),
fPluginWillRunInBridgeMode(false),
fCurrentPluginInfo(),
@@ -344,6 +348,8 @@ public:
#endif
fPluginHasFileOpen = false;
}

fPluginIsBridge = hints & PLUGIN_IS_BRIDGE;
}

void projectLoadedFromDSP()
@@ -810,12 +816,28 @@ protected:
}

d_stdout("Will scan plugins now...");
fRunnerData.handle = carla_plugin_discovery_start(fPlugin->fDiscoveryTool,
fPluginType,
IldaeilBasePlugin::getPluginPath(fPluginType),
_binaryPluginSearchCallback,
_binaryPluginCheckCacheCallback,
this);

const String& binaryPath(fPlugin->fBinaryPath);

if (binaryPath.isNotEmpty())
{
fBinaryType = BINARY_NATIVE;

fDiscoveryTool = binaryPath;
fDiscoveryTool += DISTRHO_OS_SEP_STR "carla-discovery-native";
#ifdef CARLA_OS_WIN
fDiscoveryTool += ".exe";
#endif

fRunnerData.handle = carla_plugin_discovery_start(fDiscoveryTool,
fBinaryType,
fPluginType,
IldaeilBasePlugin::getPluginPath(fPluginType),
_binaryPluginSearchCallback,
_binaryPluginCheckCacheCallback,
this);

}

if (fDrawingState == kDrawingLoading)
{
@@ -823,7 +845,7 @@ protected:
fPluginSearchFirstShow = true;
}

if (fRunnerData.handle == nullptr)
if (binaryPath.isEmpty() || (fRunnerData.handle == nullptr && !startNextDiscovery()))
{
d_stdout("Nothing found!");
return false;
@@ -836,11 +858,103 @@ protected:
return true;

// stop here
d_stdout("Found %lu plugins!", (ulong)fPlugins.size());
carla_plugin_discovery_stop(fRunnerData.handle);
fRunnerData.handle = nullptr;

if (startNextDiscovery())
return true;

d_stdout("Found %lu plugins!", (ulong)fPlugins.size());
return false;
}

bool startNextDiscovery()
{
if (! setNextDiscoveryTool())
return false;

fRunnerData.handle = carla_plugin_discovery_start(fDiscoveryTool,
fBinaryType,
fPluginType,
IldaeilBasePlugin::getPluginPath(fPluginType),
_binaryPluginSearchCallback,
_binaryPluginCheckCacheCallback,
this);

if (fRunnerData.handle == nullptr)
return startNextDiscovery();

return true;
}

bool setNextDiscoveryTool()
{
switch (fPluginType)
{
case PLUGIN_VST2:
case PLUGIN_VST3:
case PLUGIN_CLAP:
break;
default:
return false;
}

#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN64
// look for win32 plugins on win64
if (fBinaryType == BINARY_NATIVE)
{
fBinaryType = BINARY_WIN32;
fDiscoveryTool = fPlugin->fBinaryPath;
fDiscoveryTool += CARLA_OS_SEP_STR "carla-discovery-win32.exe";

if (water::File(fDiscoveryTool.buffer()).existsAsFile())
return true;
}
#endif

// no other types to try
return false;
#else // CARLA_OS_WIN

#ifndef CARLA_OS_MAC
// try 32bit plugins on 64bit systems, skipping macOS where 32bit is no longer supported
if (fBinaryType == BINARY_NATIVE)
{
fBinaryType = BINARY_POSIX32;
fDiscoveryTool = fPlugin->fBinaryPath;
fDiscoveryTool += CARLA_OS_SEP_STR "carla-discovery-posix32";

if (water::File(fDiscoveryTool.buffer()).existsAsFile())
return true;
}
#endif

// try wine bridges
#ifdef CARLA_OS_64BIT
if (fBinaryType == BINARY_NATIVE || fBinaryType == BINARY_POSIX32)
{
fBinaryType = BINARY_WIN64;
fDiscoveryTool = fPlugin->fBinaryPath;
fDiscoveryTool += CARLA_OS_SEP_STR "carla-discovery-win64.exe";

if (water::File(fDiscoveryTool.buffer()).existsAsFile())
return true;
}
#endif

if (fBinaryType != BINARY_WIN32)
{
fBinaryType = BINARY_WIN32;
fDiscoveryTool = fPlugin->fBinaryPath;
fDiscoveryTool += CARLA_OS_SEP_STR "carla-discovery-win32.exe";

if (water::File(fDiscoveryTool.buffer()).existsAsFile())
return true;
}

return false;
#endif // CARLA_OS_WIN
}

void binaryPluginSearchCallback(const CarlaPluginDiscoveryInfo* const info, const char* const sha1sum)
@@ -1279,6 +1393,23 @@ protected:
{
const CarlaHostHandle handle = fPlugin->fCarlaHostHandle;

if (fPluginIsBridge)
{
const bool active = carla_get_internal_parameter_value(handle, 0, PARAMETER_ACTIVE) > 0.5f;

if (active)
{
ImGui::BeginDisabled();
ImGui::Button("Reload bridge");
ImGui::EndDisabled();
}
else
{
if (ImGui::Button("Reload bridge"))
carla_set_active(handle, 0, true);
}
}

if (ui->presetCount != 0)
{
ImGui::Text("Preset:");


+ 8
- 1
plugins/Standalone/macOS/Info.plist View File

@@ -9,7 +9,14 @@
<key>CFBundleIconFile</key>
<string>distrho.icns</string>
<key>CFBundleIdentifier</key>
<string>Ildaeil</string>
<string>studio.kx.distrho.ildaeil</string>
<key>CFBundleShortVersionString</key>
<string>1.3</string>
<key>LSMinimumSystemVersion</key>
<string>10.8</string>
<key>NSHumanReadableCopyright</key>
<string>(C) 2011-2023 Filipe Coelho.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or any later version.</string>
<key>NSHighResolutionCapable</key>
<true/>
<key>NSRequiresAquaSystemAppearance</key>


Loading…
Cancel
Save