DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 352bcbfb7268d7ba8badb3be6b06cbef74c1bbc2
parent 8368f132201f57487987b9408aabeee2591a3fe9
Author: falkTX <falktx@falktx.com>
Date:   Sun,  7 Aug 2022 05:19:59 +0100

Correct last commit, deal with a few vst3 edge cases

Diffstat:
MMakefile.base.mk | 4++++
Mdistrho/src/DistrhoPluginVST3.cpp | 43+++++++++++++++++++++++++++----------------
2 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/Makefile.base.mk b/Makefile.base.mk @@ -352,8 +352,12 @@ endif # backwards compat, always available/enabled ifneq ($(FORCE_NATIVE_AUDIO_FALLBACK),true) +ifeq ($(STATIC_BUILD),true) +HAVE_JACK = $(shell $(PKG_CONFIG) --exists jack && echo true) +else HAVE_JACK = true endif +endif # --------------------------------------------------------------------------------------------------------------------- # Set Generic DGL stuff diff --git a/distrho/src/DistrhoPluginVST3.cpp b/distrho/src/DistrhoPluginVST3.cpp @@ -2537,13 +2537,8 @@ private: if (port.busId == busId) { - const PortGroupWithId& group(fPlugin.getPortGroupById(port.groupId)); - - if (group.name.isNotEmpty()) - strncpy_utf16(busName, group.name, 128); - else - strncpy_utf16(busName, port.name, 128); - + const String& groupName(busInfo.groups ? fPlugin.getPortGroupById(port.groupId).name : port.name); + strncpy_utf16(busName, groupName, 128); break; } } @@ -2674,23 +2669,33 @@ private: if (port.busId != busId) { - d_stdout("setAudioBusArrangement port.busId != busId: %d %d", port.busId, busId); + // d_stdout("setAudioBusArrangement port.busId != busId: %d %d", port.busId, busId); continue; } - // special case for turning mono into "stereo" - /* if (arr == (V3_SPEAKER_L|V3_SPEAKER_R)) { + // some hosts try to make CV ports stereo, that doesn't make any sense! + if (port.hints & kAudioPortIsCV) + return false; + + // force stereo mode + if (busId == 0 && busInfo.audioPorts != 0) + { + busInfo.audioPorts = 2; + enabledPorts[i] = i < 2; + } + + /* + // special case for turning mono into "stereo" if (port.groupId == kPortGroupMono) port.groupId = kPortGroupStereo; else if (busId == 0 && busInfo.audioPorts == 1) busInfo.audioPorts = 2; + */ } - */ enabledPorts[i] = arr != 0; - break; } } @@ -4801,11 +4806,17 @@ bool ENTRYFNNAME(ENTRYFNNAMEARGS) String tmpPath(getBinaryFilename()); tmpPath.truncate(tmpPath.rfind(DISTRHO_OS_SEP)); tmpPath.truncate(tmpPath.rfind(DISTRHO_OS_SEP)); - DISTRHO_SAFE_ASSERT_RETURN(tmpPath.endsWith(DISTRHO_OS_SEP_STR "Contents"), true); - tmpPath.truncate(tmpPath.rfind(DISTRHO_OS_SEP)); - bundlePath = tmpPath; - d_nextBundlePath = bundlePath.buffer(); + if (tmpPath.endsWith(DISTRHO_OS_SEP_STR "Contents")) + { + tmpPath.truncate(tmpPath.rfind(DISTRHO_OS_SEP)); + bundlePath = tmpPath; + d_nextBundlePath = bundlePath.buffer(); + } + else + { + bundlePath = "error"; + } } // init dummy plugin and set uniqueId