Browse Source

Merge branch 'falkTX:main' into open_recent

pull/1834/head
kleph GitHub 9 months ago
parent
commit
54ab724fbe
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
17 changed files with 439 additions and 214 deletions
  1. +31
    -43
      .github/workflows/build.yml
  2. +75
    -77
      .github/workflows/cmake.yml
  3. +21
    -11
      .github/workflows/dpf.yml
  4. +8
    -1
      .github/workflows/release.yml
  5. +166
    -18
      cmake/CMakeLists.txt
  6. +10
    -0
      cmake/carla-host-plugin.pc.in
  7. +9
    -0
      cmake/carla-native-plugin.pc.in
  8. +9
    -0
      cmake/carla-standalone.pc.in
  9. +4
    -8
      source/backend/plugin/CarlaPluginVST3.cpp
  10. +25
    -22
      source/backend/utils/PluginDiscovery.cpp
  11. +18
    -8
      source/frontend/pluginlist/pluginlistdialog.cpp
  12. +13
    -3
      source/modules/lilv/serd-0.24.0/src/reader.c
  13. +12
    -3
      source/native-plugins/audio-file.cpp
  14. +28
    -11
      source/plugin/carla-lv2-export.cpp
  15. +2
    -1
      source/plugin/carla-vst-export-bridged.cpp
  16. +3
    -3
      source/utils/CarlaMathUtils.hpp
  17. +5
    -5
      source/utils/CarlaUtils.hpp

+ 31
- 43
.github/workflows/build.yml View File

@@ -4,39 +4,34 @@ on: [push, pull_request]

env:
DEBIAN_FRONTEND: noninteractive
EMSCRIPTEN_VERSION: 3.1.27
HOMEBREW_NO_AUTO_UPDATE: 1
WITH_LTO: false
HOMEBREW_NO_INSTALL_CLEANUP: 1

jobs:
macos-11:
runs-on: macos-11
linux:
strategy:
matrix:
include:
- target: debian:11
- target: debian:12
- target: ubuntu:18.04
- target: ubuntu:20.04
- target: ubuntu:22.04
runs-on: ubuntu-latest
container:
image: ${{ matrix.target }}
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
brew install fluid-synth liblo libmagic libsndfile pkg-config pyqt@5 qt@5 sdl2
- name: make features
run: make features
- name: make
run: make -j $(sysctl -n hw.logicalcpu)

ubuntu-20_04:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Fix GitHub's mess
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libpcre2-8-0/focal libpcre2-16-0/focal libpcre2-32-0/focal libpcre2-posix2/focal
- name: Set up dependencies
run: |
sudo apt-get install -yqq libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev pkg-config pyqt5-dev-tools qtbase5-dev
sudo apt-get install -yqq g++-multilib libx11-6:i386 libxext6:i386
dpkg --add-architecture i386
apt-get update -qq
apt-get install -yqq g++-multilib libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev make pkg-config pyqt5-dev-tools qtbase5-dev
apt-get install -yqq libx11-6:i386 libxext6:i386
# Fix 32bit bridge build
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
sudo ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so
ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so
- name: make features
run: make features
- name: make
@@ -44,34 +39,27 @@ jobs:
- name: make posix32
run: make posix32 -j $(nproc)

ubuntu-22_04:
runs-on: ubuntu-22.04
macos:
strategy:
matrix:
include:
#- target: macos-11
- target: macos-12
runs-on: ${{ matrix.target }}
steps:
- uses: actions/checkout@v3
- name: Fix GitHub's mess
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades libc6:i386 libgcc-s1:i386 libstdc++6:i386
with:
submodules: recursive
- name: Set up dependencies
run: |
sudo apt-get install -yqq libasound2-dev libfluidsynth-dev libgl1-mesa-dev liblo-dev libmagic-dev libpulse-dev libsdl2-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev pkg-config pyqt5-dev-tools qtbase5-dev
sudo apt-get install -yqq g++-multilib libx11-6:i386 libxext6:i386
# Fix 32bit bridge build
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
sudo ln -s /usr/lib/i386-linux-gnu/libXext.so.6 /usr/lib/i386-linux-gnu/libXext.so
brew install fluid-synth liblo libmagic libsndfile pkg-config pyqt@5 qt@5 sdl2
- name: make features
run: make features
- name: make
run: make -j $(nproc)
- name: make posix32
run: make posix32 -j $(nproc)
run: make -j $(sysctl -n hw.logicalcpu)

wasm:
runs-on: ubuntu-22.04
env:
EMSCRIPTEN_VERSION: 3.1.27
steps:
- uses: actions/checkout@v3
with:


+ 75
- 77
.github/workflows/cmake.yml View File

@@ -6,140 +6,138 @@ env:
DESTDIR: ${{ github.workspace }}/build/tmp

jobs:
macos-libs:
runs-on: macos-latest
linux:
strategy:
matrix:
include:
- container: debian:11
- container: debian:12
#- container: ubuntu:20.04
- container: ubuntu:22.04
- container: ubuntu:23.10
runs-on: ubuntu-latest
container:
image: ${{ matrix.container }}
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
brew install cmake fluid-synth liblo libmagic libsndfile pkg-config
apt-get update -qq
apt-get install -yqq cmake g++ libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev lsb-release pkg-config
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}"
- name: configure
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=OFF
run: cmake -S cmake -B build
- name: build
run: cmake --build build -j $(sysctl -n hw.logicalcpu)
run: cmake --build build -j $(nproc)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: macos-libs
name: linux-${{ env.PACK_NAME }}
path: ${{ env.DESTDIR }}

macos-frameworks:
macos:
strategy:
matrix:
include:
- frameworks: ON
- frameworks: OFF
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
brew install cmake fluid-synth liblo libmagic libsndfile pkg-config
if [ "${{ matrix.frameworks }}" = "" ]; then
echo "PACK_NAME=frameworks" >> "${GITHUB_ENV}"
else
echo "PACK_NAME=libs" >> "${GITHUB_ENV}"
fi
- name: configure
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=ON
run: cmake -S cmake -B build -DCARLA_BUILD_FRAMEWORKS=${{ matrix.frameworks }}
- name: build
run: cmake --build build -j $(sysctl -n hw.logicalcpu)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: macos-frameworks
name: macos-${{ env.PACK_NAME }}
path: ${{ env.DESTDIR }}

mingw32-cross:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- container: debian:11
- container: debian:12
#- container: ubuntu:20.04
- container: ubuntu:22.04
- container: ubuntu:23.10
runs-on: ubuntu-latest
container:
image: ${{ matrix.container }}
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 wine-stable:i386
dpkg --add-architecture i386
apt-get update -qq
apt-get install -yqq cmake binutils-mingw-w64-i686 gcc g++-mingw-w64 lsb-release mingw-w64 pkg-config
if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then
apt-get install -yqq wine wine32 wine64
else
apt-get install -yqq wine-stable
fi
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}"
- name: configure
env:
PKG_CONFIG: false
run: cmake -S cmake -B build \
-DCMAKE_CROSSCOMPILING=ON \
-DCMAKE_CROSSCOMPILING_EMULATOR=wine \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_SYSTEM_PROCESSOR=i686 \
-DCMAKE_C_COMPILER=i686-w64-mingw32-gcc \
-DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ \
-DCMAKE_RANLIB=i686-w64-mingw32-ranlib \
-DCMAKE_AR=$(which i686-w64-mingw32-ar)
run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=i686 -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ -DCMAKE_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_C_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_CXX_COMPILER_AR=/usr/bin/i686-w64-mingw32-ar -DCMAKE_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_C_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/i686-w64-mingw32-ranlib -DCMAKE_RC_COMPILER=/usr/bin/i686-w64-mingw32-windres
- name: build
run: cmake --build build -j $(nproc)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: mingw32
name: mingw32-${{ env.PACK_NAME }}
path: ${{ env.DESTDIR }}

mingw64-cross:
runs-on: ubuntu-22.04
strategy:
matrix:
include:
- container: debian:11
- container: debian:12
#- container: ubuntu:20.04
- container: ubuntu:22.04
- container: ubuntu:23.10
runs-on: ubuntu-latest
container:
image: ${{ matrix.container }}
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
sudo dpkg --add-architecture i386
sudo apt-get update -qq
sudo apt-get install -yqq --allow-downgrades cmake libc6:i386 libgcc-s1:i386 libstdc++6:i386 binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 wine-stable
dpkg --add-architecture i386
apt-get update -qq
apt-get install -yqq cmake binutils-mingw-w64-x86-64 gcc g++-mingw-w64 lsb-release mingw-w64 pkg-config
if [ "$(lsb_release -si 2>/dev/null)" = "Debian" ]; then
apt-get install -yqq wine wine32 wine64
else
apt-get install -yqq wine-stable
fi
echo "PACK_NAME=$(lsb_release -cs 2>/dev/null)" >> "${GITHUB_ENV}"
- name: configure
env:
PKG_CONFIG: false
run: cmake -S cmake -B build \
-DCMAKE_CROSSCOMPILING=ON \
-DCMAKE_CROSSCOMPILING_EMULATOR=wine \
-DCMAKE_SYSTEM_NAME=Windows \
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \
-DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \
-DCMAKE_RANLIB=x86_64-w64-mingw32-ranlib \
-DCMAKE_AR=$(which x86_64-w64-mingw32-ar)
- name: build
run: cmake --build build -j $(nproc)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: mingw64
path: ${{ env.DESTDIR }}

ubuntu-20_04:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config
- name: configure
run: cmake -S cmake -B build
- name: build
run: cmake --build build -j $(nproc)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: ubuntu-20.04
path: ${{ env.DESTDIR }}

ubuntu-22_04:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set up dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -yqq cmake libfluidsynth-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev pkg-config
- name: configure
run: cmake -S cmake -B build
run: cmake -S cmake -B build -DCMAKE_CROSSCOMPILING=ON -DCMAKE_CROSSCOMPILING_EMULATOR=wine -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_SYSTEM_PROCESSOR=x86_64 -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_C_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_CXX_COMPILER_AR=/usr/bin/x86_64-w64-mingw32-ar -DCMAKE_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_C_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_CXX_COMPILER_RANLIB=/usr/bin/x86_64-w64-mingw32-ranlib -DCMAKE_RC_COMPILER=/usr/bin/x86_64-w64-mingw32-windres
- name: build
run: cmake --build build -j $(nproc)
- name: install
run: cmake --install build --verbose
- uses: actions/upload-artifact@v3
with:
name: ubuntu-22.04
name: mingw64-${{ env.PACK_NAME }}
path: ${{ env.DESTDIR }}

windows:


+ 21
- 11
.github/workflows/dpf.yml View File

@@ -2,12 +2,17 @@ name: dpf

on: [push, pull_request]

env:
PAWPAW_SKIP_LTO: 1
PAWPAW_SKIP_TESTS: 1

jobs:
linux:
strategy:
matrix:
target: [linux-x86_64]
# linux-arm64, linux-armhf, linux-i686, linux-riscv64
# TODO: add PawPaw bootstrap type
# linux-arm64, linux-armhf, linux-i686, linux-riscv64,
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
@@ -22,7 +27,7 @@ jobs:
macos:
strategy:
matrix:
target: [macos-intel, macos-universal]
target: [macos-intel, macos-universal, macos-universal-10.15]
runs-on: macos-11
steps:
- uses: actions/checkout@v3
@@ -54,15 +59,20 @@ jobs:
pawpaw: true
release: false

# pluginval:
# runs-on: ubuntu-20.04
# steps:
# - uses: actions/checkout@v3
# with:
# submodules: recursive
# - uses: distrho/dpf-makefile-action@v1
# with:
# target: pluginval
# NOTE disabled for now
# lv2lint does not allow to differentiate exposed features for multiple plugins in a single binary
# (e.g. plugin A uses worker while plugin B does not, but they come from the same binary)
# see https://github.com/falkTX/Carla/actions/runs/7389992205/job/20103997236
#pluginval:
#runs-on: ubuntu-20.04
#steps:
#- uses: actions/checkout@v3
#with:
#submodules: recursive
#- uses: distrho/dpf-makefile-action@v1
#with:
#target: pluginval
#pawpaw: true

source:
runs-on: ubuntu-20.04


+ 8
- 1
.github/workflows/release.yml View File

@@ -4,8 +4,12 @@ on: [push, pull_request]

env:
CACHE_VERSION: 1
DEBIAN_FRONTEND: noninteractive
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
PAWPAW_SKIP_LTO: 1
PAWPAW_VERSION: cd7b760d6a32ecad263b112c12be8a306ed1e89c
PAWPAW_SKIP_TESTS: 1
PAWPAW_VERSION: 9534e2b4f9bafc993e05fada89b824f3a2176708

jobs:
# macOS native universal build
@@ -29,6 +33,7 @@ jobs:
run: |
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }}
./PawPaw/.github/workflows/bootstrap-deps.sh macos-universal
./PawPaw/bootstrap-carla.sh macos-universal && ./PawPaw/.cleanup.sh macos-universal
- name: Build macOS universal
shell: bash
@@ -92,6 +97,7 @@ jobs:
run: |
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }}
./PawPaw/.github/workflows/bootstrap-deps.sh win32
./PawPaw/bootstrap-carla.sh win32 && ./PawPaw/.cleanup.sh win32
- name: Build win32 cross-compiled
shell: bash
@@ -155,6 +161,7 @@ jobs:
run: |
git clone https://github.com/DISTRHO/PawPaw.git
git -C PawPaw checkout ${{ env.PAWPAW_VERSION }}
./PawPaw/.github/workflows/bootstrap-deps.sh win64
./PawPaw/bootstrap-carla.sh win64 && ./PawPaw/.cleanup.sh win64
- name: Build win64 cross-compiled
shell: bash


+ 166
- 18
cmake/CMakeLists.txt View File

@@ -16,6 +16,7 @@ set(PROJECT_SHORT_VERSION 2.5.91)
set(CMAKE_POLICY_DEFAULT_CMP0025 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0063 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
set(CMAKE_POLICY_DEFAULT_CMP0126 NEW)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)
@@ -49,8 +50,8 @@ else()
set(CARLA_USE_OSC_DEFAULT TRUE)
endif()


set(CARLA_BUILD_FRAMEWORKS FALSE CACHE BOOL "Build libraries as macOS frameworks")
set(CARLA_BUILD_STATIC FALSE CACHE BOOL "Build static libraries")
set(CARLA_ENABLE_JSFX TRUE CACHE BOOL "Enable JSFX")
set(CARLA_USE_JACK ${CARLA_USE_JACK_DEFAULT} CACHE BOOL "Enable JACK")
set(CARLA_USE_OSC ${CARLA_USE_OSC_DEFAULT} CACHE BOOL "Enable OSC")
@@ -60,6 +61,12 @@ if(${CARLA_BUILD_FRAMEWORKS} AND NOT APPLE)
mark_as_advanced(CARLA_BUILD_FRAMEWORKS)
endif()

if(${CARLA_BUILD_STATIC})
set(CARLA_LIB_TYPE STATIC)
else()
set(CARLA_LIB_TYPE SHARED)
endif()

if(${CARLA_BUILD_FRAMEWORKS})
execute_process(COMMAND date -u +%y%m%d%H%M%S OUTPUT_VARIABLE CARLA_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
@@ -158,6 +165,8 @@ function(set_common_target_properties TARGET)
target_compile_definitions(${TARGET}
PRIVATE
BUILDING_CARLA
$<$<BOOL:${MSVC}>:_USE_MATH_DEFINES>
PUBLIC
$<$<BOOL:${CARLA_ENABLE_JSFX}>:HAVE_YSFX>
$<$<BOOL:${CARLA_USE_JACK}>:HAVE_JACK>
$<$<BOOL:${FLUIDSYNTH_FOUND}>:HAVE_FLUIDSYNTH>
@@ -166,7 +175,6 @@ function(set_common_target_properties TARGET)
$<$<BOOL:${PYQT_FOUND}>:HAVE_PYQT>
$<$<BOOL:${SNDFILE_FOUND}>:HAVE_SNDFILE>
$<$<BOOL:${X11_FOUND}>:HAVE_X11>
$<$<BOOL:${MSVC}>:_USE_MATH_DEFINES>
)

target_compile_options(${TARGET}
@@ -240,7 +248,7 @@ target_include_directories(carla-audio-decoder
)

target_link_libraries(carla-audio-decoder
PRIVATE
PUBLIC
PkgConfig::SNDFILE
)

@@ -268,7 +276,7 @@ target_include_directories(carla-jackbridge
)

target_link_libraries(carla-jackbridge
PRIVATE
PUBLIC
${CARLA_LIBDL}
${CARLA_LIBRT}
)
@@ -439,7 +447,7 @@ target_include_directories(carla-native-plugins
)

target_link_libraries(carla-native-plugins
PRIVATE
PUBLIC
${CARLA_PTHREADS}
)

@@ -484,7 +492,7 @@ target_include_directories(carla-rtmempool
)

target_link_libraries(carla-rtmempool
PRIVATE
PUBLIC
${CARLA_LIBDL}
${CARLA_LIBRT}
${CARLA_PTHREADS}
@@ -513,6 +521,7 @@ target_include_directories(carla-sfzero
target_link_libraries(carla-sfzero
PRIVATE
carla-audio-decoder
PUBLIC
${CARLA_PTHREADS}
)

@@ -541,7 +550,7 @@ target_include_directories(carla-water
)

target_link_libraries(carla-water
PRIVATE
PUBLIC
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
$<$<BOOL:${WIN32}>:comdlg32>
$<$<BOOL:${WIN32}>:ole32>
@@ -576,7 +585,7 @@ target_include_directories(carla-water-files
)

target_link_libraries(carla-water-files
PRIVATE
PUBLIC
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>
$<$<BOOL:${WIN32}>:ole32>
$<$<BOOL:${WIN32}>:winmm>
@@ -691,7 +700,7 @@ target_include_directories(carla-zita-resampler
)

target_link_libraries(carla-zita-resampler
PRIVATE
PUBLIC
${CARLA_PTHREADS}
)

@@ -753,6 +762,7 @@ target_link_libraries(carla-bridge-native
carla-water
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
carla-zita-resampler
PUBLIC
PkgConfig::FLUIDSYNTH
PkgConfig::LIBLO
PkgConfig::LIBMAGIC
@@ -824,6 +834,7 @@ target_link_libraries(carla-bridge-lv2-gtk2
PRIVATE
carla-lilv
carla-water-files
PUBLIC
PkgConfig::X11
${CARLA_PTHREADS}
)
@@ -867,6 +878,7 @@ target_link_libraries(carla-bridge-lv2-gtk3
PRIVATE
carla-lilv
carla-water-files
PUBLIC
PkgConfig::X11
${CARLA_PTHREADS}
)
@@ -904,6 +916,7 @@ target_link_libraries(carla-discovery-native
carla-lilv
carla-water-files
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
PUBLIC
PkgConfig::FLUIDSYNTH
${CARLA_PTHREADS}
)
@@ -913,11 +926,135 @@ target_sources(carla-discovery-native
../source/discovery/carla-discovery.cpp
)

#######################################################################################################################
# carla host-plugin

add_library(carla-host-plugin ${CARLA_LIB_TYPE})
add_library(carla::host-plugin ALIAS carla-host-plugin)

set_common_target_properties(carla-host-plugin)

if(${CARLA_BUILD_FRAMEWORKS})
set(carla-host-plugin-public-headers
../source/backend/CarlaBackend.h
../source/backend/CarlaHost.h
../source/backend/CarlaUtils.h
)

set_target_properties(carla-host-plugin
PROPERTIES
FRAMEWORK TRUE
FRAMEWORK_VERSION A
OUTPUT_NAME carla-host-plugin
PUBLIC_HEADER "${carla-host-plugin-public-headers}"
MACOSX_FRAMEWORK_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info-framework.plist.in"
MACOSX_FRAMEWORK_IDENTIFIER "studio.kx.carla.host-plugin"
MACOSX_FRAMEWORK_BUNDLE_VERSION "${CARLA_DATE}"
MACOSX_FRAMEWORK_SHORT_VERSION_STRING "${PROJECT_SHORT_VERSION}"
)
else()
set_target_properties(carla-host-plugin
PROPERTIES
OUTPUT_NAME carla_host-plugin
IMPORT_PREFIX lib
PREFIX lib
)
endif()

target_compile_definitions(carla-host-plugin
PRIVATE
CARLA_PLUGIN_BUILD
CARLA_LIB_EXT="${CMAKE_SHARED_LIBRARY_SUFFIX}"
)

# FIXME
# target_compile_options(carla-host-plugin
# PRIVATE
# $<$<STREQUAL:${CMAKE_C_COMPILER_FRONTEND_VARIANT},GNU>:-Wno-unused-parameter>
# )

target_include_directories(carla-host-plugin
PRIVATE
../source
../source/modules
PUBLIC
../source/backend
../source/includes
../source/utils
)

target_link_libraries(carla-host-plugin
PRIVATE
carla-jackbridge
carla-lilv
carla-native-plugins
carla-rtmempool
carla-sfzero
carla-water
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
carla-zita-resampler
PUBLIC
PkgConfig::FLUIDSYNTH
PkgConfig::LIBLO
PkgConfig::LIBMAGIC
PkgConfig::X11
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
${CARLA_PTHREADS}
)

target_sources(carla-host-plugin
PRIVATE
../source/backend/engine/CarlaEngine.cpp
../source/backend/engine/CarlaEngineClient.cpp
../source/backend/engine/CarlaEngineData.cpp
../source/backend/engine/CarlaEngineGraph.cpp
../source/backend/engine/CarlaEngineInternal.cpp
../source/backend/engine/CarlaEngineNative.cpp
../source/backend/engine/CarlaEngineOsc.cpp
../source/backend/engine/CarlaEngineOscHandlers.cpp
../source/backend/engine/CarlaEngineOscSend.cpp
../source/backend/engine/CarlaEnginePorts.cpp
../source/backend/engine/CarlaEngineRunner.cpp
../source/backend/plugin/CarlaPlugin.cpp
../source/backend/plugin/CarlaPluginBridge.cpp
../source/backend/plugin/CarlaPluginInternal.cpp
../source/backend/plugin/CarlaPluginAU.cpp
../source/backend/plugin/CarlaPluginCLAP.cpp
../source/backend/plugin/CarlaPluginFluidSynth.cpp
../source/backend/plugin/CarlaPluginJuce.cpp
../source/backend/plugin/CarlaPluginJSFX.cpp
../source/backend/plugin/CarlaPluginLADSPADSSI.cpp
../source/backend/plugin/CarlaPluginLV2.cpp
../source/backend/plugin/CarlaPluginNative.cpp
../source/backend/plugin/CarlaPluginSFZero.cpp
../source/backend/plugin/CarlaPluginVST2.cpp
../source/backend/plugin/CarlaPluginVST3.cpp
../source/plugin/carla-host-plugin.cpp
$<$<BOOL:${CARLA_USE_JACK}>:../source/backend/plugin/CarlaPluginJack.cpp>
PUBLIC
${carla-host-plugin-public-headers}
)

install(TARGETS carla-host-plugin
ARCHIVE DESTINATION ${CARLA_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CARLA_INSTALL_LIBDIR}
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CARLA_INSTALL_BINDIR}
)

if(${CARLA_BUILD_FRAMEWORKS})
install(FILES
../source/includes/CarlaDefines.h
../source/includes/CarlaNative.h
../source/includes/CarlaNativePlugin.h
DESTINATION ${CMAKE_INSTALL_LIBDIR}/carla-standalone.framework/Versions/A/Headers/includes)
endif()

#######################################################################################################################
# carla native-plugin

add_library(carla-native-plugin SHARED)
add_library(carla::standalone ALIAS carla-native-plugin)
add_library(carla-native-plugin ${CARLA_LIB_TYPE})
add_library(carla::native-plugin ALIAS carla-native-plugin)

set_common_target_properties(carla-native-plugin)

@@ -963,9 +1100,10 @@ target_compile_definitions(carla-native-plugin
target_include_directories(carla-native-plugin
PRIVATE
../source
../source/modules
PUBLIC
../source/backend
../source/includes
../source/modules
../source/utils
)

@@ -1023,6 +1161,7 @@ target_link_libraries(carla-native-plugin
carla-water
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
carla-zita-resampler
PUBLIC
PkgConfig::FLUIDSYNTH
PkgConfig::LIBLO
PkgConfig::LIBMAGIC
@@ -1082,7 +1221,7 @@ endif()
#######################################################################################################################
# carla standalone

add_library(carla-standalone SHARED)
add_library(carla-standalone ${CARLA_LIB_TYPE})
add_library(carla::standalone ALIAS carla-standalone)

set_common_target_properties(carla-standalone)
@@ -1134,9 +1273,10 @@ target_compile_options(carla-standalone
target_include_directories(carla-standalone
PRIVATE
../source
../source/modules
PUBLIC
../source/backend
../source/includes
../source/modules
../source/utils
)

@@ -1150,6 +1290,7 @@ target_link_libraries(carla-standalone
carla-water
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
carla-zita-resampler
PUBLIC
PkgConfig::FLUIDSYNTH
PkgConfig::LIBLO
PkgConfig::LIBMAGIC
@@ -1238,7 +1379,7 @@ endif()
#######################################################################################################################
# carla utils

add_library(carla-utils SHARED)
add_library(carla-utils ${CARLA_LIB_TYPE})
add_library(carla::utils ALIAS carla-utils)

set_common_target_properties(carla-utils)
@@ -1272,9 +1413,10 @@ endif()
target_include_directories(carla-utils
PRIVATE
../source
../source/modules
PUBLIC
../source/backend
../source/includes
../source/modules
../source/utils
)

@@ -1284,12 +1426,12 @@ target_link_libraries(carla-utils
carla-lilv
carla-water-files
$<$<BOOL:${CARLA_ENABLE_JSFX}>:carla-ysfx>
PUBLIC
PkgConfig::FLUIDSYNTH
PkgConfig::LIBMAGIC
PkgConfig::X11
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
${CARLA_PTHREADS}
PUBLIC
$<$<BOOL:${APPLE}>:$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>>
$<$<BOOL:${WIN32}>:winmm>
)

@@ -1445,9 +1587,15 @@ install(TARGETS carla-headers-utils PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_IN

if(NOT ${CARLA_BUILD_FRAMEWORKS} AND NOT MSVC)
configure_file(carla-utils.pc.in carla-utils.pc @ONLY)
configure_file(carla-standalone.pc.in carla-standalone.pc @ONLY)
configure_file(carla-native-plugin.pc.in carla-native-plugin.pc @ONLY)
configure_file(carla-host-plugin.pc.in carla-host-plugin.pc @ONLY)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/carla-utils.pc
${CMAKE_CURRENT_BINARY_DIR}/carla-standalone.pc
${CMAKE_CURRENT_BINARY_DIR}/carla-native-plugin.pc
${CMAKE_CURRENT_BINARY_DIR}/carla-host-plugin.pc
DESTINATION
${CMAKE_INSTALL_LIBDIR}/pkgconfig
)


+ 10
- 0
cmake/carla-host-plugin.pc.in View File

@@ -0,0 +1,10 @@
prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
carla_libdir=${libdir}/carla

Name: carla-host-plugin
Version: @PROJECT_VERSION@
Description: Carla Host as Native Plugin
Libs: -Wl,-rpath,${carla_libdir} -L${carla_libdir} -lcarla_host-plugin
Cflags: -I${includedir}/carla -I${includedir}/carla/includes

+ 9
- 0
cmake/carla-native-plugin.pc.in View File

@@ -0,0 +1,9 @@
prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@

Name: carla-native-plugin
Version: @PROJECT_VERSION@
Description: Carla Native Plugin
Libs: -Wl,-rpath,${libdir}/carla -L${libdir}/carla -lcarla_native-plugin
Cflags: -I${includedir}/carla -I${includedir}/carla/includes

+ 9
- 0
cmake/carla-standalone.pc.in View File

@@ -0,0 +1,9 @@
prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@

Name: carla-standalone
Version: @PROJECT_VERSION@
Description: Carla Host Standalone
Libs: -Wl,-rpath,${libdir}/carla -L${libdir}/carla -lcarla_standalone2
Cflags: -I${includedir}/carla -I${includedir}/carla/includes

+ 4
- 8
source/backend/plugin/CarlaPluginVST3.cpp View File

@@ -2003,10 +2003,8 @@ public:
const int32_t numChannels = busInfo.channel_count;
CARLA_SAFE_ASSERT_BREAK(numChannels >= 0);

if ((busInfo.flags & V3_DEFAULT_ACTIVE) == 0x0) {
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component,
V3_AUDIO, V3_INPUT, b, true) == V3_OK);
}
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component,
V3_AUDIO, V3_INPUT, b, true) == V3_OK);

fBuses.inputs[b].num_channels = numChannels;
fBuses.inputInfo[b].bus_type = busInfo.bus_type;
@@ -2031,10 +2029,8 @@ public:
const int32_t numChannels = busInfo.channel_count;
CARLA_SAFE_ASSERT_BREAK(numChannels >= 0);

if ((busInfo.flags & V3_DEFAULT_ACTIVE) == 0x0) {
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component,
V3_AUDIO, V3_OUTPUT, b, true) == V3_OK);
}
CARLA_SAFE_ASSERT_BREAK(v3_cpp_obj(fV3.component)->activate_bus(fV3.component,
V3_AUDIO, V3_OUTPUT, b, true) == V3_OK);

fBuses.outputs[b].num_channels = numChannels;
fBuses.outputInfo[b].bus_type = busInfo.bus_type;


+ 25
- 22
source/backend/utils/PluginDiscovery.cpp View File

@@ -440,6 +440,31 @@ private:
default:
break;
}

String winePrefix;

if (options.wine.autoPrefix && !fBinaries.empty())
{
const File file(fBinaries[fBinaryIndex]);
const String filename(file.getFullPathName());

winePrefix = findWinePrefix(filename);
}

if (winePrefix.isEmpty())
{
const char* const envWinePrefix = std::getenv("WINEPREFIX");

if (envWinePrefix != nullptr && envWinePrefix[0] != '\0')
winePrefix = envWinePrefix;
else if (options.wine.fallbackPrefix != nullptr && options.wine.fallbackPrefix[0] != '\0')
winePrefix = options.wine.fallbackPrefix.buffer();
else
winePrefix = File::getSpecialLocation(File::userHomeDirectory).getFullPathName() + "/.wine";
}

const CarlaScopedEnvVar sev1("WINEDEBUG", "-all");
const CarlaScopedEnvVar sev2("WINEPREFIX", winePrefix.toRawUTF8());
#endif

if (fBinaries.empty())
@@ -468,28 +493,6 @@ private:
}
}

#ifndef CARLA_OS_WIN
String winePrefix;

if (options.wine.autoPrefix)
winePrefix = findWinePrefix(filename);

if (winePrefix.isEmpty())
{
const char* const envWinePrefix = std::getenv("WINEPREFIX");

if (envWinePrefix != nullptr && envWinePrefix[0] != '\0')
winePrefix = envWinePrefix;
else if (options.wine.fallbackPrefix != nullptr && options.wine.fallbackPrefix[0] != '\0')
winePrefix = options.wine.fallbackPrefix.buffer();
else
winePrefix = File::getSpecialLocation(File::userHomeDirectory).getFullPathName() + "/.wine";
}

const CarlaScopedEnvVar sev1("WINEDEBUG", "-all");
const CarlaScopedEnvVar sev2("WINEPREFIX", winePrefix.toRawUTF8());
#endif

carla_stdout("Scanning \"%s\"...", filename.toRawUTF8());

#ifndef CARLA_OS_WIN


+ 18
- 8
source/frontend/pluginlist/pluginlistdialog.cpp View File

@@ -407,7 +407,7 @@ static QVariant asByteArray(const PluginInfo& info)
QByteArray qdata;

// start with the POD data, stored as-is
qdata.append(static_cast<const char*>(static_cast<const void*>(&info)), sizeof(PluginInfoHeader));
qdata.append(reinterpret_cast<const char*>(&info), sizeof(PluginInfoHeader));

// then all the strings, with a null terminating byte
{
@@ -455,8 +455,8 @@ static PluginInfo asPluginInfo(const QByteArray &qdata)
CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginInfoHeader) + sizeof(char) * 5, {});

// read POD data first
const PluginInfoHeader* const data
= static_cast<const PluginInfoHeader*>(static_cast<const void*>(qdata.constData()));
const PluginInfoHeader* const data = reinterpret_cast<const PluginInfoHeader*>(qdata.constData());
PluginInfo info = {};
info.build = data->build;
info.type = data->type;
@@ -472,7 +472,7 @@ static PluginInfo asPluginInfo(const QByteArray &qdata)
info.parameterOuts = data->parameterOuts;

// then all the strings, keeping the same order as in `asVariant`
const char* sdata = static_cast<const char*>(static_cast<const void*>(data + 1));
const char* sdata = reinterpret_cast<const char*>(data + 1);

info.category = QString::fromUtf8(sdata);
sdata += info.category.size() + 1;
@@ -556,7 +556,7 @@ static QByteArray asByteArray(const PluginFavorite& fav)
QByteArray qdata;

// start with the POD data, stored as-is
qdata.append(static_cast<const char*>(static_cast<const void*>(&fav)), sizeof(PluginFavoriteHeader));
qdata.append(reinterpret_cast<const char*>(&fav), sizeof(PluginFavoriteHeader));

// then all the strings, with a null terminating byte
{
@@ -591,12 +591,11 @@ static PluginFavorite asPluginFavorite(const QByteArray& qdata)
CARLA_SAFE_ASSERT_RETURN(static_cast<size_t>(qdata.size()) >= sizeof(PluginFavoriteHeader) + sizeof(char) * 3, {});

// read POD data first
const PluginFavoriteHeader* const data
= static_cast<const PluginFavoriteHeader*>(static_cast<const void*>(qdata.constData()));
const PluginFavoriteHeader* const data = reinterpret_cast<const PluginFavoriteHeader*>(qdata.constData());
PluginFavorite fav = { data->type, data->uniqueId, {}, {} };

// then all the strings, keeping the same order as in `asVariant`
const char* sdata = static_cast<const char*>(static_cast<const void*>(data + 1));
const char* sdata = reinterpret_cast<const char*>(data + 1);

fav.filename = QString::fromUtf8(sdata);
sdata += fav.filename.size() + 1;
@@ -663,6 +662,8 @@ struct PluginListDialog::PrivateData {
bool firstInit = true;
bool ignoreCache = false;
bool checkInvalid = false;
bool usePluginBridges = false;
bool useWineBridges = false;
CarlaPluginDiscoveryHandle handle = nullptr;
QCarlaString tool;
CarlaScopedPointer<PluginRefreshDialog> dialog;
@@ -686,6 +687,9 @@ struct PluginListDialog::PrivateData {
handle = nullptr;
}

if (!usePluginBridges)
return false;

#ifdef CARLA_OS_WIN
#ifdef CARLA_OS_WIN64
// look for win32 plugins on win64
@@ -719,6 +723,9 @@ struct PluginListDialog::PrivateData {
}
#endif

if (!useWineBridges)
return false;

// try wine bridges
#ifdef CARLA_OS_64BIT
if (btype == BINARY_NATIVE || btype == BINARY_POSIX32)
@@ -822,6 +829,9 @@ PluginListDialog::PluginListDialog(QWidget* const parent, const HostSettings* co
// ----------------------------------------------------------------------------------------------------------------
// Set-up global discovery options

p->discovery.usePluginBridges = hostSettings->showPluginBridges;
p->discovery.useWineBridges = hostSettings->showWineBridges;

#ifndef CARLA_OS_WIN
carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_AUTO_PREFIX, hostSettings->wineAutoPrefix, nullptr);
carla_plugin_discovery_set_option(ENGINE_OPTION_WINE_EXECUTABLE, 0, hostSettings->wineExecutable);


+ 13
- 3
source/modules/lilv/serd-0.24.0/src/reader.c View File

@@ -554,9 +554,19 @@ read_STRING_LITERAL_LONG(SerdReader* reader, SerdNodeFlags* flags, uint8_t q)
eat_byte_safe(reader, q3);
return ref;
} else {
*flags |= SERD_HAS_QUOTE;
push_byte(reader, ref, c);
read_character(reader, ref, flags, q2);
if (q2 == '\\') {
push_byte(reader, ref, c);
if (!read_ECHAR(reader, ref, flags) &&
!read_UCHAR(reader, ref, &code)) {
r_err(reader, SERD_ERR_BAD_SYNTAX,
"invalid escape `\\%c'\n", peek_byte(reader));
return pop_node(reader, ref);
}
} else {
*flags |= SERD_HAS_QUOTE;
push_byte(reader, ref, c);
read_character(reader, ref, flags, q2);
}
}
} else {
read_character(reader, ref, flags, eat_byte_safe(reader, c));


+ 12
- 3
source/native-plugins/audio-file.cpp View File

@@ -449,12 +449,21 @@ protected:
return;
}

const bool offline = isOffline();
bool needsIdleRequest = false;

if (fReader.tickFrames(outBuffer, 0, frames, framePos, fLoopMode, isOffline()) && ! fPendingFileRead)
if (fReader.tickFrames(outBuffer, 0, frames, framePos, fLoopMode, offline) && ! fPendingFileRead)
{
fPendingFileRead = true;
needsIdleRequest = true;
if (offline)
{
fPendingFileRead = false;
fReader.readPoll();
}
else
{
fPendingFileRead = true;
needsIdleRequest = true;
}
}

fLastPosition = fReader.getLastPlayPosition() * 100.f;


+ 28
- 11
source/plugin/carla-lv2-export.cpp View File

@@ -118,9 +118,11 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio
text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n";
text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n";
text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n";
text += "@prefix idpy: <http://harrisonconsoles.com/lv2/inlinedisplay#> .\n";
text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n";
text += "@prefix mod: <http://moddevices.com/ns/mod#> .\n";
text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n";
text += "@prefix owl: <http://www.w3.org/2002/07/owl#> .\n";
text += "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .\n";
text += "@prefix ui: <" LV2_UI_PREFIX "> .\n";
text += "\n";
@@ -129,7 +131,7 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio
// Project

text += "<https://kx.studio/carla>\n";
text += " a lv2:Project ;\n";
text += " a owl:Ontology, doap:Project ;\n";
text += " doap:homepage <https://kx.studio/carla> ;\n";
text += " doap:maintainer [\n";
text += " foaf:homepage <https://falktx.com/> ;\n";
@@ -143,6 +145,17 @@ static void writeManifestFile(PluginListManager& plm, const uint32_t microVersio
text += " lv2:symbol \"carla\" .\n";
text += "\n";

// -------------------------------------------------------------------
// Extensions

text += "idpy:interface\n";
text += " a lv2:ExtensionData .\n";
text += "\n";

text += "idpy:queue_draw\n";
text += " a lv2:Feature .\n";
text += "\n";

// -------------------------------------------------------------------
// Plugins

@@ -271,6 +284,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc,
text += "@prefix atom: <" LV2_ATOM_PREFIX "> .\n";
text += "@prefix doap: <http://usefulinc.com/ns/doap#> .\n";
text += "@prefix foaf: <http://xmlns.com/foaf/0.1/> .\n";
text += "@prefix idpy: <http://harrisonconsoles.com/lv2/inlinedisplay#> .\n";
text += "@prefix lv2: <" LV2_CORE_PREFIX "> .\n";
text += "@prefix opts: <" LV2_OPTIONS_PREFIX "> .\n";
text += "@prefix patch: <" LV2_PATCH_PREFIX "> .\n";
@@ -291,28 +305,31 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc,
switch (pluginDesc->category)
{
case NATIVE_PLUGIN_CATEGORY_SYNTH:
text += " a lv2:InstrumentPlugin, lv2:Plugin ;\n";
text += " a lv2:InstrumentPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_DELAY:
text += " a lv2:DelayPlugin, lv2:Plugin ;\n";
text += " a lv2:DelayPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_EQ:
text += " a lv2:EQPlugin, lv2:Plugin ;\n";
text += " a lv2:EQPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_FILTER:
text += " a lv2:FilterPlugin, lv2:Plugin ;\n";
text += " a lv2:FilterPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_DYNAMICS:
text += " a lv2:DynamicsPlugin, lv2:Plugin ;\n";
text += " a lv2:DynamicsPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_MODULATOR:
text += " a lv2:ModulatorPlugin, lv2:Plugin ;\n";
text += " a lv2:ModulatorPlugin, lv2:Plugin, doap:Project ;\n";
break;
case NATIVE_PLUGIN_CATEGORY_UTILITY:
text += " a lv2:UtilityPlugin, lv2:Plugin ;\n";
text += " a lv2:UtilityPlugin, lv2:Plugin, doap:Project ;\n";
break;
default:
text += " a lv2:Plugin ;\n";
if (pluginDesc->midiIns >= 1 && pluginDesc->midiOuts >= 1 && pluginDesc->audioIns + pluginDesc->audioOuts == 0)
text += " a lv2:MIDIPlugin, lv2:Plugin, doap:Project ;\n";
else
text += " a lv2:Plugin, doap:Project ;\n";
break;
}

@@ -325,7 +342,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc,
if (pluginDesc->hints & NATIVE_PLUGIN_IS_RTSAFE)
text += " lv2:optionalFeature <" LV2_CORE__hardRTCapable "> ;\n";
if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY)
text += " lv2:optionalFeature <" LV2_INLINEDISPLAY__queue_draw "> ;\n";
text += " lv2:optionalFeature idpy:queue_draw ;\n";
if ((pluginDesc->hints & NATIVE_PLUGIN_USES_STATE) || (pluginDesc->hints & NATIVE_PLUGIN_NEEDS_UI_OPEN_SAVE))
text += " lv2:optionalFeature <" LV2_STATE__threadSafeRestore "> ;\n";
text += "\n";
@@ -358,7 +375,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc,
text += " lv2:extensionData <" LV2_WORKER__interface "> ;\n";

if (pluginDesc->hints & NATIVE_PLUGIN_HAS_INLINE_DISPLAY)
text += " lv2:extensionData <" LV2_INLINEDISPLAY__interface "> ;\n";
text += " lv2:extensionData idpy:interface ;\n";

text += "\n";



+ 2
- 1
source/plugin/carla-vst-export-bridged.cpp View File

@@ -43,7 +43,8 @@ static HINSTANCE getCurrentModuleInstanceHandle() noexcept
CARLA_PLUGIN_EXPORT
BOOL WINAPI DllMain(HINSTANCE hInst, DWORD, LPVOID)
{
currentModuleHandle = hInst;
if (reason == DLL_PROCESS_ATTACH)
currentModuleHandle = hInst;
return 1;
}



+ 3
- 3
source/utils/CarlaMathUtils.hpp View File

@@ -179,7 +179,7 @@ void carla_addFloats(float dest[], const float src[], const std::size_t count) n
if (!std::isfinite(src[i]))
__builtin_unreachable();
#endif
*dest++ += *src++;
dest[i] += src[i];
}
}

@@ -217,7 +217,7 @@ void carla_fillFloatsWithSingleValue(float data[], const float& value, const std
if (!std::isfinite(data[i]))
__builtin_unreachable();
#endif
*data++ = value;
data[i] = value;
}
}
}
@@ -302,7 +302,7 @@ void carla_multiply(float data[], const float& multiplier, const std::size_t cou
if (!std::isfinite(data[i]))
__builtin_unreachable();
#endif
*data++ *= multiplier;
data[i] *= multiplier;
}
}
}


+ 5
- 5
source/utils/CarlaUtils.hpp View File

@@ -406,7 +406,7 @@ void carla_add(T dest[], const T src[], const std::size_t count) noexcept
CARLA_SAFE_ASSERT_RETURN(count > 0,);

for (std::size_t i=0; i<count; ++i)
*dest++ += *src++;
dest[i] += src[i];
}

/*
@@ -422,7 +422,7 @@ void carla_addWithMultiply(T dest[], const T src[], const T& multiplier, const s
CARLA_SAFE_ASSERT_RETURN(count > 0,);

for (std::size_t i=0; i<count; ++i)
*dest++ += *src++ * multiplier;
dest[i] += src[i] * multiplier;
}

/*
@@ -453,7 +453,7 @@ void carla_copyWithMultiply(T dest[], const T src[], const T& multiplier, const
CARLA_SAFE_ASSERT_RETURN(count > 0,);

for (std::size_t i=0; i<count; ++i)
*dest++ = *src++ * multiplier;
dest[i] = src[i] * multiplier;
}

/*
@@ -473,7 +473,7 @@ void carla_fill(T data[], const T& value, const std::size_t count) noexcept
else
{
for (std::size_t i=0; i<count; ++i)
*data++ = value;
data[i] = value;
}
}

@@ -494,7 +494,7 @@ void carla_multiply(T data[], const T& multiplier, const std::size_t count) noex
else
{
for (std::size_t i=0; i<count; ++i)
*data++ *= multiplier;
data[i] *= multiplier;
}
}



Loading…
Cancel
Save