Browse Source

Merge branch 'develop' of github.com:falkTX/Carla into develop

tags/v2.1-alpha2
falkTX 5 years ago
parent
commit
b65977f5ee
35 changed files with 264 additions and 148 deletions
  1. +13
    -13
      source/Makefile.mk
  2. +3
    -1
      source/backend/CarlaUtils.h
  3. +16
    -7
      source/backend/engine/CarlaEngineNative.cpp
  4. +5
    -2
      source/backend/engine/CarlaEngineOscSend.cpp
  5. +18
    -1
      source/backend/engine/CarlaEngineRtAudio.cpp
  6. +3
    -3
      source/backend/plugin/CarlaPlugin.cpp
  7. +2
    -2
      source/backend/plugin/CarlaPluginBridge.cpp
  8. +16
    -7
      source/backend/plugin/CarlaPluginFluidSynth.cpp
  9. +3
    -3
      source/backend/plugin/CarlaPluginLV2.cpp
  10. +2
    -4
      source/backend/plugin/CarlaPluginNative.cpp
  11. +3
    -3
      source/backend/plugin/CarlaPluginVST2.cpp
  12. +23
    -3
      source/backend/utils/Information.cpp
  13. +2
    -1
      source/bridges-plugin/CarlaBridgeSingleLV2.cpp
  14. +1
    -1
      source/bridges-ui/CarlaBridgeFormatLV2.cpp
  15. +12
    -6
      source/bridges-ui/CarlaBridgeToolkitQt.cpp
  16. +7
    -0
      source/bridges-ui/Makefile
  17. +6
    -4
      source/discovery/carla-discovery.cpp
  18. +5
    -2
      source/includes/lv2_rdf.hpp
  19. +8
    -1
      source/interposer/interposer-jack-x11.cpp
  20. +8
    -1
      source/interposer/interposer-safe.cpp
  21. +2
    -2
      source/modules/water/midi/MidiMessageSequence.cpp
  22. +3
    -1
      source/modules/water/midi/MidiMessageSequence.h
  23. +3
    -3
      source/native-plugins/lfo.c
  24. +2
    -2
      source/native-plugins/midi-channelize.c
  25. +4
    -1
      source/native-plugins/midi-file.cpp
  26. +12
    -7
      source/native-plugins/midi-pattern.cpp
  27. +4
    -4
      source/plugin/Makefile
  28. +8
    -8
      source/plugin/carla-lv2-export.cpp
  29. +8
    -6
      source/plugin/carla-lv2-ui.cpp
  30. +7
    -7
      source/plugin/carla-lv2.cpp
  31. +31
    -29
      source/plugin/carla-vst.cpp
  32. +3
    -0
      source/plugin/ui_launcher.cpp
  33. +16
    -8
      source/utils/CarlaLv2Utils.hpp
  34. +2
    -2
      source/utils/CarlaPipeUtils.cpp
  35. +3
    -3
      source/utils/CarlaString.hpp

+ 13
- 13
source/Makefile.mk View File

@@ -170,30 +170,30 @@ endif
# Strict test build

ifeq ($(TESTBUILD),true)
BASE_FLAGS += -Werror -Wabi=98 -Wcast-qual -Wclobbered -Wconversion -Wdisabled-optimization -Wfloat-equal -Wformat=2 -Winit-self -Wmissing-declarations
BASE_FLAGS += -Woverlength-strings -Wpointer-arith -Wredundant-decls -Wshadow -Wsign-conversion -Wundef -Wuninitialized -Wunused
BASE_FLAGS += -Werror -Wabi=98 -Wcast-qual -Wclobbered -Wconversion -Wdisabled-optimization
BASE_FLAGS += -Wdouble-promotion -Wfloat-equal -Wlogical-op -Wpointer-arith -Wsign-conversion
BASE_FLAGS += -Wformat=2 -Woverlength-strings
BASE_FLAGS += -Wmissing-declarations -Wredundant-decls
BASE_FLAGS += -Wshadow -Wundef -Wuninitialized -Wunused
BASE_FLAGS += -Wstrict-aliasing -fstrict-aliasing
BASE_FLAGS += -Wstrict-overflow -fstrict-overflow
CFLAGS += -Wnested-externs -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings
CXXFLAGS += -Wc++0x-compat -Wc++11-compat -Weffc++ -Wnon-virtual-dtor -Woverloaded-virtual -Wzero-as-null-pointer-constant
BASE_FLAGS += -Wduplicated-branches -Wduplicated-cond -Wnull-dereference
CFLAGS += -Winit-self -Wjump-misses-init -Wmissing-prototypes -Wnested-externs -Wstrict-prototypes -Wwrite-strings
CXXFLAGS += -Wc++0x-compat -Wc++11-compat -Weffc++
CXXFLAGS += -Wnon-virtual-dtor -Woverloaded-virtual
# CXXFLAGS += -Wold-style-cast -Wuseless-cast
CXXFLAGS += -Wzero-as-null-pointer-constant
ifeq ($(LINUX),true)
BASE_FLAGS += -isystem /opt/kxstudio/include
CXXFLAGS += -isystem /usr/include/glib-2.0
CXXFLAGS += -isystem /usr/include/glib-2.0/glib
CXXFLAGS += -isystem /usr/include/gtk-2.0
CXXFLAGS += -isystem /usr/include/gtk-2.0/gio
CXXFLAGS += -isystem /usr/include/qt5
endif
ifeq ($(MACOS),true)
BASE_FLAGS += -isystem /opt/kxstudio/include
CXXFLAGS += -isystem /System/Library/Frameworks
endif
ifeq ($(WIN64),true)
BASE_FLAGS += -isystem /opt/mingw64/include
else
ifeq ($(WIN32),true)
BASE_FLAGS += -isystem /opt/mingw32/include
endif
ifeq ($(WIN64),true)
BASE_FLAGS += -isystem /opt/mingw64/include
endif
endif



+ 3
- 1
source/backend/CarlaUtils.h View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -240,6 +240,7 @@ CARLA_EXPORT bool carla_pipe_client_flush_and_unlock(CarlaPipeClientHandle handl
*/
CARLA_EXPORT void carla_pipe_client_destroy(CarlaPipeClientHandle handle);

#ifndef CARLA_HOST_H_INCLUDED
/* ------------------------------------------------------------------------------------------------------------
* info about current library */

@@ -252,6 +253,7 @@ CARLA_EXPORT const char* carla_get_library_filename();
* Get the folder where this carla library resides.
*/
CARLA_EXPORT const char* carla_get_library_folder();
#endif

// -------------------------------------------------------------------------------------------------------------------
// TESTING


+ 16
- 7
source/backend/engine/CarlaEngineNative.cpp View File

@@ -953,7 +953,7 @@ protected:
if (! fUiServer.writeMessage(tmpBuf))
return;

std::sprintf(tmpBuf, "%f\n", plugin->getInternalParameterValue(i));
std::sprintf(tmpBuf, "%f\n", static_cast<double>(plugin->getInternalParameterValue(i)));
if (! fUiServer.writeMessage(tmpBuf))
return;

@@ -993,7 +993,13 @@ protected:
if (! fUiServer.writeMessage(tmpBuf))
return;

std::sprintf(tmpBuf, "%f:%f:%f:%f:%f:%f\n", paramRanges.def, paramRanges.min, paramRanges.max, paramRanges.step, paramRanges.stepSmall, paramRanges.stepLarge);
std::sprintf(tmpBuf, "%f:%f:%f:%f:%f:%f\n",
static_cast<double>(paramRanges.def),
static_cast<double>(paramRanges.min),
static_cast<double>(paramRanges.max),
static_cast<double>(paramRanges.step),
static_cast<double>(paramRanges.stepSmall),
static_cast<double>(paramRanges.stepLarge));
if (! fUiServer.writeMessage(tmpBuf))
return;

@@ -1001,7 +1007,7 @@ protected:
if (! fUiServer.writeMessage(tmpBuf))
return;

std::sprintf(tmpBuf, "%f\n", plugin->getParameterValue(i));
std::sprintf(tmpBuf, "%f\n", static_cast<double>(plugin->getParameterValue(i)));
if (! fUiServer.writeMessage(tmpBuf))
return;
}
@@ -1186,7 +1192,7 @@ protected:
return;
{
const ScopedLocale csl;
std::sprintf(tmpBuf, "%f\n", value3);
std::sprintf(tmpBuf, "%f\n", static_cast<double>(value3));
}
if (! fUiServer.writeMessage(tmpBuf))
return;
@@ -1844,7 +1850,10 @@ protected:
return;

std::sprintf(tmpBuf, "%f:%f:%f:%f\n",
plugData.peaks[0], plugData.peaks[1], plugData.peaks[2], plugData.peaks[3]);
static_cast<double>(plugData.peaks[0]),
static_cast<double>(plugData.peaks[1]),
static_cast<double>(plugData.peaks[2]),
static_cast<double>(plugData.peaks[3]));
if (! fUiServer.writeMessage(tmpBuf))
return;

@@ -1859,7 +1868,7 @@ protected:
if (! fUiServer.writeMessage(tmpBuf))
return;

std::sprintf(tmpBuf, "%f\n", plugin->getParameterValue(j));
std::sprintf(tmpBuf, "%f\n", static_cast<double>(plugin->getParameterValue(j)));
if (! fUiServer.writeMessage(tmpBuf))
return;

@@ -2020,7 +2029,7 @@ public:
handlePtr->bufferSizeChanged(static_cast<uint32_t>(value));
return 0;
case NATIVE_PLUGIN_OPCODE_SAMPLE_RATE_CHANGED:
CARLA_SAFE_ASSERT_RETURN(opt > 0.0, 0);
CARLA_SAFE_ASSERT_RETURN(opt > 0.0f, 0);
handlePtr->sampleRateChanged(static_cast<double>(opt));
return 0;
case NATIVE_PLUGIN_OPCODE_OFFLINE_CHANGED:


+ 5
- 2
source/backend/engine/CarlaEngineOscSend.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -401,7 +401,10 @@ void CarlaEngine::oscSend_control_set_peaks(const uint pluginId) const noexcept
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_peaks");
try_lo_send(pData->oscData->target, targetPath, "iffff", static_cast<int32_t>(pluginId),
epData.peaks[0], epData.peaks[1], epData.peaks[2], epData.peaks[3]);
static_cast<double>(epData.peaks[0]),
static_cast<double>(epData.peaks[1]),
static_cast<double>(epData.peaks[2]),
static_cast<double>(epData.peaks[3]));
}

void CarlaEngine::oscSend_control_exit() const noexcept


+ 18
- 1
source/backend/engine/CarlaEngineRtAudio.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin Host
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -25,9 +25,26 @@

#include "jackbridge/JackBridge.hpp"

#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wconversion"
# pragma clang diagnostic ignored "-Weffc++"
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wconversion"
# pragma GCC diagnostic ignored "-Weffc++"
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif

#include "rtaudio/RtAudio.h"
#include "rtmidi/RtMidi.h"

#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
#endif

CARLA_BACKEND_START_NAMESPACE

// -------------------------------------------------------------------------------------------------------------------


+ 3
- 3
source/backend/plugin/CarlaPlugin.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -463,7 +463,7 @@ void CarlaPlugin::randomizeParameters() noexcept
if (paramData.hints & PARAMETER_IS_BOOLEAN)
{
random = static_cast<float>(std::rand()) / static_cast<float>(RAND_MAX);
value = random > 0.5 ? paramRanges.max : paramRanges.min;
value = random > 0.5f ? paramRanges.max : paramRanges.min;
}
else
{
@@ -2195,7 +2195,7 @@ void CarlaPlugin::registerToOscClient() noexcept
if (--paramIns == 0)
break;
}
else if (paramData.type == PARAMETER_INPUT)
else if (paramData.type == PARAMETER_OUTPUT)
{
if (--paramOuts == 0)
break;


+ 2
- 2
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Plugin Bridge
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -574,7 +574,7 @@ public:
}

if (! waitForParameterText())
std::snprintf(strBuf, STR_MAX, "%f", fParams[parameterId].value);
std::snprintf(strBuf, STR_MAX, "%f", static_cast<double>(fParams[parameterId].value));
}

void getParameterSymbol(const uint32_t parameterId, char* const strBuf) const noexcept override


+ 16
- 7
source/backend/plugin/CarlaPluginFluidSynth.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla FluidSynth Plugin
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -79,16 +79,25 @@ public:

// set default values
fluid_synth_set_reverb_on(fSynth, 1);
fluid_synth_set_reverb(fSynth, sFluidDefaults[FluidSynthReverbRoomSize], sFluidDefaults[FluidSynthReverbDamp], sFluidDefaults[FluidSynthReverbWidth], sFluidDefaults[FluidSynthReverbLevel]);
fluid_synth_set_reverb(fSynth,
sFluidDefaults[FluidSynthReverbRoomSize],
sFluidDefaults[FluidSynthReverbDamp],
sFluidDefaults[FluidSynthReverbWidth],
sFluidDefaults[FluidSynthReverbLevel]);

fluid_synth_set_chorus_on(fSynth, 1);
fluid_synth_set_chorus(fSynth, sFluidDefaults[FluidSynthChorusNr], sFluidDefaults[FluidSynthChorusLevel], sFluidDefaults[FluidSynthChorusSpeedHz], sFluidDefaults[FluidSynthChorusDepthMs], sFluidDefaults[FluidSynthChorusType]);
fluid_synth_set_chorus(fSynth,
static_cast<int>(sFluidDefaults[FluidSynthChorusNr] + 0.5f),
sFluidDefaults[FluidSynthChorusLevel],
sFluidDefaults[FluidSynthChorusSpeedHz],
sFluidDefaults[FluidSynthChorusDepthMs],
static_cast<int>(sFluidDefaults[FluidSynthChorusType] + 0.5f));

fluid_synth_set_polyphony(fSynth, FLUID_DEFAULT_POLYPHONY);
fluid_synth_set_gain(fSynth, 1.0f);

for (int i=0; i < MAX_MIDI_CHANNELS; ++i)
fluid_synth_set_interp_method(fSynth, i, sFluidDefaults[FluidSynthInterpolation]);
fluid_synth_set_interp_method(fSynth, i, static_cast<int>(sFluidDefaults[FluidSynthInterpolation] + 0.5f));
}

~CarlaPluginFluidSynth() override
@@ -1736,9 +1745,7 @@ private:
#endif

// misc. defaults
sFluidDefaults[FluidSynthPolyphony] = (float)fluid_synth_get_polyphony(fSynth);
sFluidDefaults[FluidSynthInterpolation] = FLUID_INTERP_DEFAULT;
sFluidDefaults[FluidSynthVoiceCount] = 0.0f;
}

enum FluidSynthParameters {
@@ -1779,7 +1786,9 @@ private:
};

bool CarlaPluginFluidSynth::sFluidDefaultsStored = false;
float CarlaPluginFluidSynth::sFluidDefaults[FluidSynthParametersMax];
float CarlaPluginFluidSynth::sFluidDefaults[FluidSynthParametersMax] = {
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
};

CARLA_BACKEND_END_NAMESPACE



+ 3
- 3
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -958,7 +958,7 @@ public:
return;
}

rindex -= fRdfDescriptor->PortCount;
rindex -= static_cast<int32_t>(fRdfDescriptor->PortCount);

if (rindex < static_cast<int32_t>(fRdfDescriptor->ParameterCount))
{
@@ -982,7 +982,7 @@ public:
return;
}

rindex -= fRdfDescriptor->PortCount;
rindex -= static_cast<int32_t>(fRdfDescriptor->PortCount);

if (rindex < static_cast<int32_t>(fRdfDescriptor->ParameterCount))
{
@@ -1401,7 +1401,7 @@ public:
if (! fPipeServer.writeMessage(tmpBuf))
return;

std::snprintf(tmpBuf, 0xff, "%f\n", getParameterValue(i));
std::snprintf(tmpBuf, 0xff, "%f\n", static_cast<double>(getParameterValue(i)));
if (! fPipeServer.writeMessage(tmpBuf))
return;
}


+ 2
- 4
source/backend/plugin/CarlaPluginNative.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugin
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -1150,8 +1150,6 @@ public:

if (min > max)
max = min;
else if (max < min)
min = max;

if (carla_isEqual(min, max))
{
@@ -2481,7 +2479,7 @@ public:
return false;
}

if (label == nullptr && label[0] != '\0')
if (label == nullptr || label[0] == '\0')
{
pData->engine->setLastError("null label");
return false;


+ 3
- 3
source/backend/plugin/CarlaPluginVST2.cpp View File

@@ -333,7 +333,7 @@ public:
dispatcher(effGetParamDisplay, static_cast<int32_t>(parameterId), 0, strBuf);

if (strBuf[0] == '\0')
std::snprintf(strBuf, STR_MAX, "%f", getParameterValue(parameterId));
std::snprintf(strBuf, STR_MAX, "%f", static_cast<double>(getParameterValue(parameterId)));
}

void getParameterUnit(const uint32_t parameterId, char* const strBuf) const noexcept override
@@ -1165,8 +1165,8 @@ public:
CARLA_SAFE_ASSERT_INT(timeInfo.bbt.bar > 0, timeInfo.bbt.bar);
CARLA_SAFE_ASSERT_INT(timeInfo.bbt.beat > 0, timeInfo.bbt.beat);

const double ppqBar = double(timeInfo.bbt.bar - 1) * timeInfo.bbt.beatsPerBar;
const double ppqBeat = double(timeInfo.bbt.beat - 1);
const double ppqBar = static_cast<double>(timeInfo.bbt.beatsPerBar) * (timeInfo.bbt.bar - 1);
const double ppqBeat = static_cast<double>(timeInfo.bbt.beat - 1.0);
const double ppqTick = timeInfo.bbt.tick / timeInfo.bbt.ticksPerBeat;

// PPQ Pos


+ 23
- 3
source/backend/utils/Information.cpp View File

@@ -15,13 +15,11 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "CarlaHost.h"
#include "CarlaUtils.h"

#include "CarlaString.hpp"

#include "rtaudio/RtAudio.h"
#include "rtmidi/RtMidi.h"

#ifdef HAVE_FLUIDSYNTH
# include <fluidsynth.h>
#endif
@@ -29,6 +27,28 @@
#ifdef USING_JUCE
# include "AppConfig.h"
# include "juce_core/juce_core.h"
#else

#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wconversion"
# pragma clang diagnostic ignored "-Weffc++"
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wconversion"
# pragma GCC diagnostic ignored "-Weffc++"
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif

#include "rtaudio/RtAudio.h"
#include "rtmidi/RtMidi.h"

#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
#endif

#endif

#include "water/files/File.h"


+ 2
- 1
source/bridges-plugin/CarlaBridgeSingleLV2.cpp View File

@@ -422,7 +422,8 @@ protected:

default:
carla_stdout("engineCallback(%i:%s, %u, %i, %i, %f, %s)",
action, EngineCallbackOpcode2Str(action), pluginId, value1, value2, value3, valueStr);
action, EngineCallbackOpcode2Str(action), pluginId, value1, value2,
static_cast<double>(value3), valueStr);
break;
}
}


+ 1
- 1
source/bridges-ui/CarlaBridgeFormatLV2.cpp View File

@@ -139,7 +139,7 @@ struct Lv2PluginOptions {
LV2_Options_Option opts[Count];

Lv2PluginOptions() noexcept
: sampleRate(gInitialSampleRate),
: sampleRate(static_cast<float>(gInitialSampleRate)),
transientWinId(0),
windowTitle(kNullWindowTitle)
{


+ 12
- 6
source/bridges-ui/CarlaBridgeToolkitQt.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Bridge UI
* Copyright (C) 2011-2017 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -85,7 +85,7 @@ public:

fApp = new QApplication(qargc, qargv);

fWindow = new QMainWindow(nullptr);
fWindow = new QMainWindow(nullptr, nullptr);
fWindow->resize(30, 30);
fWindow->hide();

@@ -259,7 +259,14 @@ private:
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
# include "CarlaBridgeToolkitQt5.moc"
#else
# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
# endif
# include "CarlaBridgeToolkitQt4.moc"
# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
# endif
#endif

// -------------------------------------------------------------------------
@@ -275,13 +282,12 @@ CARLA_BRIDGE_UI_END_NAMESPACE

// -------------------------------------------------------------------------

// missing declaration
int qInitResources();
int qCleanupResources();

#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include "resources.qt5.cpp"
#else
// missing declaration
int qInitResources();
int qCleanupResources();
# include "resources.qt4.cpp"
#endif



+ 7
- 0
source/bridges-ui/Makefile View File

@@ -54,6 +54,13 @@ LINK_GTK3_FLAGS += -lX11
LINK_QT4_FLAGS += -lX11
endif

ifeq ($(TESTBUILD),true)
BUILD_GTK2_FLAGS += -isystem /usr/include/glib-2.0
BUILD_GTK3_FLAGS += -isystem /usr/include/glib-2.0
BUILD_QT4_FLAGS += -isystem /usr/include/qt4
BUILD_QT5_FLAGS += -isystem /usr/include/x86_64-linux-gnu/qt5
endif

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

ifneq ($(MACOS_OR_WIN32),true)


+ 6
- 4
source/discovery/carla-discovery.cpp View File

@@ -441,11 +441,11 @@ static void do_dssi_check(lib_t& libHandle, const char* const filename, const bo

while ((descriptor = descFn(i++)) != nullptr)
{
const LADSPA_Descriptor* const ldescriptor(descriptor->LADSPA_Plugin);
const LADSPA_Descriptor* const ldescriptor = descriptor->LADSPA_Plugin;

if (ldescriptor == nullptr)
{
DISCOVERY_OUT("error", "Plugin '" << ldescriptor->Name << "' has no LADSPA interface");
DISCOVERY_OUT("error", "Plugin has no LADSPA interface");
continue;
}
if (descriptor->DSSI_API_Version != DSSI_VERSION_MAJOR)
@@ -838,7 +838,8 @@ static intptr_t vstHostCanDo(const char* const feature)
// Host-side callback
static intptr_t VSTCALLBACK vstHostCallback(AEffect* const effect, const int32_t opcode, const int32_t index, const intptr_t value, void* const ptr, const float opt)
{
carla_debug("vstHostCallback(%p, %i:%s, %i, " P_INTPTR ", %p, %f)", effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, opt);
carla_debug("vstHostCallback(%p, %i:%s, %i, " P_INTPTR ", %p, %f)",
effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, static_cast<double>(opt));

static VstTimeInfo timeInfo;
intptr_t ret = 0;
@@ -948,7 +949,8 @@ static intptr_t VSTCALLBACK vstHostCallback(AEffect* const effect, const int32_t
break;

default:
carla_stdout("vstHostCallback(%p, %i:%s, %i, " P_INTPTR ", %p, %f)", effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, opt);
carla_stdout("vstHostCallback(%p, %i:%s, %i, " P_INTPTR ", %p, %f)",
effect, opcode, vstMasterOpcode2str(opcode), index, value, ptr, static_cast<double>(opt));
break;
}



+ 5
- 2
source/includes/lv2_rdf.hpp View File

@@ -1,6 +1,6 @@
/*
* Custom types to store LV2 information
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -460,7 +460,10 @@ struct LV2_RDF_Parameter {
Range(nullptr),
Input(true),
Label(nullptr),
Comment(nullptr) {}
Comment(nullptr),
MidiMap(),
Points(),
Unit() {}

~LV2_RDF_Parameter() noexcept
{


+ 8
- 1
source/interposer/interposer-jack-x11.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Interposer for JACK Applications X11 control
* Copyright (C) 2014-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2014-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -20,6 +20,11 @@
#include <dlfcn.h>
#include <X11/Xlib.h>

CARLA_EXPORT
int jack_carla_interposed_action(int action, int value, void* ptr);

// --------------------------------------------------------------------------------------------------------------------

struct ScopedLibOpen {
void* handle;
long long winId;
@@ -52,6 +57,8 @@ struct ScopedLibOpen {
static const ScopedLibOpen slo;
return slo;
}

CARLA_DECLARE_NON_COPY_STRUCT(ScopedLibOpen);
};

// --------------------------------------------------------------------------------------------------------------------


+ 8
- 1
source/interposer/interposer-safe.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Interposer for unsafe backend functions
* Copyright (C) 2014-2017 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2014-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -24,6 +24,13 @@

#define PREVENTED_FUNC_MSG carla_stderr2("Carla prevented a plugin from calling '%s', bad plugin!", __FUNCTION__)

// -----------------------------------------------------------------------
// Gtk stuff

CARLA_EXPORT void gtk_init(int*, char***);
CARLA_EXPORT int gtk_init_check(int*, char***);
CARLA_EXPORT int gtk_init_with_args(int*, char***, const char*, void*, const char*, void**);

// -----------------------------------------------------------------------
// Our custom functions



+ 2
- 2
source/modules/water/midi/MidiMessageSequence.cpp View File

@@ -3,7 +3,7 @@
This file is part of the Water library.
Copyright (c) 2016 ROLI Ltd.
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com>
Copyright (C) 2017-2019 Filipe Coelho <falktx@falktx.com>
Permission is granted to use this software under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license/
@@ -33,7 +33,7 @@ MidiMessageSequence::MidiMessageSequence()
MidiMessageSequence::MidiMessageSequence (const MidiMessageSequence& other)
{
list.addCopiesOf (other.list);
addSequence(other, 0.0);
updateMatchedPairs();
}


+ 3
- 1
source/modules/water/midi/MidiMessageSequence.h View File

@@ -3,7 +3,7 @@
This file is part of the Water library.
Copyright (c) 2016 ROLI Ltd.
Copyright (C) 2017 Filipe Coelho <falktx@falktx.com>
Copyright (C) 2017-2019 Filipe Coelho <falktx@falktx.com>
Permission is granted to use this software under the terms of the ISC license
http://www.isc.org/downloads/software-support-policy/isc-license/
@@ -102,6 +102,8 @@ public:
//==============================================================================
friend class MidiMessageSequence;
MidiEventHolder (const MidiMessage&);
CARLA_DECLARE_NON_COPY_CLASS(MidiEventHolder);
};
//==============================================================================


+ 3
- 3
source/native-plugins/lfo.c View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -240,8 +240,8 @@ static void lfo_process(NativePluginHandle handle, float** inBuffer, float** out
break;
}

value *= handlePtr->multiplier;
value += handlePtr->baseStart;
value *= (double)handlePtr->multiplier;
value += (double)handlePtr->baseStart;

if (value <= 0.0)
handlePtr->value = 0.0f;


+ 2
- 2
source/native-plugins/midi-channelize.c View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -130,7 +130,7 @@ static void midichannelize_process(NativePluginHandle handle, float** inBuffer,
tmpEvent.port = midiEvent->port;
tmpEvent.time = midiEvent->time;

tmpEvent.data[0] = status | (channel - 1);
tmpEvent.data[0] = (uint8_t)(status | (channel - 1));
tmpEvent.data[1] = midiEvent->data[1];
tmpEvent.data[2] = midiEvent->data[2];
tmpEvent.data[3] = midiEvent->data[3];


+ 4
- 1
source/native-plugins/midi-file.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2012-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -55,6 +55,9 @@ protected:
{
const NativeTimeInfo* const timePos(getTimeInfo());

if (timePos == nullptr)
return;

if (fWasPlayingBefore != timePos->playing)
{
fNeedsAllNotesOff = true;


+ 12
- 7
source/native-plugins/midi-pattern.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2012-2015 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -52,7 +52,7 @@ public:
fParameters[kParameterDefLength] = 4.0f;
fParameters[kParameterQuantize] = 4.0f;

fMaxTicks = 48.0*fTimeSigNum*fParameters[kParameterMeasures] /2; // FIXME: why /2 ?
fMaxTicks = 48.0 * fTimeSigNum * 4 /* kParameterMeasures */ / 2; // FIXME: why / 2 ?
}

protected:
@@ -192,15 +192,17 @@ protected:
fTimeSigNum = 5;
else if (value > 2.5f)
fTimeSigNum = 4;
/* FIXME
else if (value > 2.5f)
fTimeSigNum = 3;
*/
else if (value > 1.5f)
fTimeSigNum = 2;
else
fTimeSigNum = 1;
// fall through
case kParameterMeasures:
fMaxTicks = 48.0*fTimeSigNum*fParameters[kParameterMeasures] /2; // FIXME: why /2 ?
fMaxTicks = 48.0 * fTimeSigNum * static_cast<double>(fParameters[kParameterMeasures]) /2; // FIXME: why /2 ?
break;
}
}
@@ -290,9 +292,9 @@ protected:
char strBuf[0xff+1];
strBuf[0xff] = '\0';

const float beatsPerBar = fTimeInfo.bbt.valid ? fTimeInfo.bbt.beatsPerBar : 4.0f;
const double beatsPerBar = fTimeInfo.bbt.valid ? static_cast<double>(fTimeInfo.bbt.beatsPerBar) : 4.0;
const double beatsPerMinute = fTimeInfo.bbt.valid ? fTimeInfo.bbt.beatsPerMinute : 120.0;
const float beatType = fTimeInfo.bbt.valid ? fTimeInfo.bbt.beatType : 4.0f;
const float beatType = fTimeInfo.bbt.valid ? fTimeInfo.bbt.beatType : 4.0f;

const double ticksPerBeat = 48.0;
const double ticksPerFrame = ticksPerBeat / (60.0 / beatsPerMinute * getSampleRate());
@@ -300,7 +302,7 @@ protected:
const double fullBeats = fullTicks / ticksPerBeat;

const uint32_t tick = static_cast<uint32_t>(std::floor(std::fmod(fullTicks, ticksPerBeat)));
const uint32_t beat = static_cast<uint32_t>(std::floor(std::fmod(fullBeats, static_cast<double>(beatsPerBar))));
const uint32_t beat = static_cast<uint32_t>(std::floor(std::fmod(fullBeats, beatsPerBar)));
const uint32_t bar = static_cast<uint32_t>(std::floor(fullBeats/beatsPerBar));

const CarlaMutexLocker cml(getPipeLock());
@@ -315,7 +317,10 @@ protected:
if (! writeMessage(strBuf))
return;

std::sprintf(strBuf, "%f:%f:%f\n", beatsPerMinute, beatsPerBar, beatType);
std::sprintf(strBuf, "%f:%f:%f\n",
static_cast<double>(beatsPerMinute),
static_cast<double>(beatsPerBar),
static_cast<double>(beatType));
if (! writeMessage(strBuf))
return;



+ 4
- 4
source/plugin/Makefile View File

@@ -314,22 +314,22 @@ $(OBJDIR)/carla-vst.cpp.patchbay-syn.o: carla-vst.cpp
$(OBJDIR)/carla-vst.cpp.patchbay-syn16.o: carla-vst.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (PatchbaySynth 16ch)"
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_PLUGIN_PATCHBAY=1 -DCARLA_PLUGIN_SYNTH=1 -DCARLA_PLUGIN_16CH=1 -c -o $@
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_PLUGIN_PATCHBAY=1 -DCARLA_PLUGIN_SYNTH=1 -DCARLA_PLUGIN_16CH -c -o $@

$(OBJDIR)/carla-vst.cpp.patchbay-syn32.o: carla-vst.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (PatchbaySynth 32ch)"
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_PLUGIN_PATCHBAY=1 -DCARLA_PLUGIN_SYNTH=1 -DCARLA_PLUGIN_32CH=1 -c -o $@
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_PLUGIN_PATCHBAY=1 -DCARLA_PLUGIN_SYNTH=1 -DCARLA_PLUGIN_32CH -c -o $@

$(OBJDIR)/carla-vst.cpp.shell.o: carla-vst.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (VstShell)"
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_VST_SHELL=1 -DCARLA_PLUGIN_SYNTH=1 -c -o $@
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_VST_SHELL -DCARLA_PLUGIN_SYNTH=1 -c -o $@

$(OBJDIR)/carla-vst.cpp.shellfx.o: carla-vst.cpp
-@mkdir -p $(OBJDIR)
@echo "Compiling $< (VstShell)"
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_VST_SHELL=1 -DCARLA_PLUGIN_SYNTH=0 -c -o $@
@$(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_VST_SHELL -DCARLA_PLUGIN_SYNTH=0 -c -o $@

$(OBJDIR)/carla-vst-export-bridged.cpp.fx.o: carla-vst-export-bridged.cpp
-@mkdir -p $(OBJDIR)


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

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2013-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -67,14 +67,14 @@ static const String nameToSymbol(const String& name, const uint32_t portIndex)
}
else
{
if (std::isdigit(trimmedName[0]))
if (std::isdigit(static_cast<int>(trimmedName[0])))
symbol += "_";

for (int i=0; i < trimmedName.length(); ++i)
{
const water_uchar c = trimmedName[i];

if (std::isalpha(c) || std::isdigit(c))
if (std::isalpha(static_cast<int>(c)) || std::isdigit(static_cast<int>(c)))
symbol += c;
else
symbol += "_";
@@ -562,10 +562,10 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc)
text += " lv2:name \"Port " + String(i+1) + "\" ;\n";

if ((paramInfo->hints & NATIVE_PARAMETER_IS_OUTPUT) == 0)
text += " lv2:default " + String::formatted("%f", paramInfo->ranges.def) + " ;\n";
text += " lv2:default " + String::formatted("%f", static_cast<double>(paramInfo->ranges.def)) + " ;\n";

text += " lv2:minimum " + String::formatted("%f", paramInfo->ranges.min) + " ;\n";
text += " lv2:maximum " + String::formatted("%f", paramInfo->ranges.max) + " ;\n";
text += " lv2:minimum " + String::formatted("%f", static_cast<double>(paramInfo->ranges.min)) + " ;\n";
text += " lv2:maximum " + String::formatted("%f", static_cast<double>(paramInfo->ranges.max)) + " ;\n";

if ((paramInfo->hints & NATIVE_PARAMETER_IS_AUTOMABLE) == 0)
text += " lv2:portProperty <" LV2_PORT_PROPS__expensive "> ;\n";
@@ -592,7 +592,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc)
text += " [ ";

text += "rdfs:label \"" + String(scalePoint->label) + "\" ;\n";
text += " rdf:value " + String::formatted("%f", scalePoint->value) + " ";
text += " rdf:value " + String::formatted("%f", static_cast<double>(scalePoint->value)) + " ";

if (j+1 == paramInfo->scalePointCount)
text += "] ;\n";
@@ -665,7 +665,7 @@ static void writePluginFile(const NativePluginDescriptor* const pluginDesc)
presetText += " lv2:port [\n";

presetText += " lv2:symbol \"" + nameToSymbol(paramName, j) + "\" ;\n";
presetText += " pset:value " + String::formatted("%f", pluginDesc->get_parameter_value(pluginHandle, j)) + " ;\n";
presetText += " pset:value " + String::formatted("%f", static_cast<double>(pluginDesc->get_parameter_value(pluginHandle, j))) + " ;\n";

if (j+1 == paramCount)
presetText += " ] ;\n\n";


+ 8
- 6
source/plugin/carla-lv2-ui.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Native Plugins
* Copyright (C) 2013-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -138,7 +138,7 @@ public:

{
const ScopedLocale csl;
std::snprintf(msg, 127, "control %u %f", portIndex, *valuePtr);
std::snprintf(msg, 127, "control %u %f", portIndex, static_cast<double>(*valuePtr));
}

msg[127] = '\0';
@@ -264,11 +264,11 @@ protected:
carla_zeroChars(atomBuf, atomSize);

LV2_Atom* const atom = (LV2_Atom*)atomBuf;
atom->size = msgSize;
atom->size = static_cast<uint32_t>(msgSize);
atom->type = fUridTranser2;
std::memcpy(atomBuf+sizeof(LV2_Atom), msg, msgSize);

fUI.writeFunction(fUI.controller, 0, atomSize, fUridTranser, atomBuf);
fUI.writeFunction(fUI.controller, 0, static_cast<uint32_t>(atomSize), fUridTranser, atomBuf);
}
else
{
@@ -276,11 +276,11 @@ protected:
carla_zeroChars(atomBuf, atomSize);

LV2_Atom* const atom = (LV2_Atom*)atomBuf;
atom->size = msgSize;
atom->size = static_cast<uint32_t>(msgSize);
atom->type = fUridTranser2;
std::memcpy(atomBuf+sizeof(LV2_Atom), msg, msgSize);

fUI.writeFunction(fUI.controller, 0, atomSize, fUridTranser, atomBuf);
fUI.writeFunction(fUI.controller, 0, static_cast<uint32_t>(atomSize), fUridTranser, atomBuf);

delete[] atomBuf;
}
@@ -317,6 +317,8 @@ private:
name = nullptr;
}
}

CARLA_DECLARE_NON_COPY_STRUCT(UI);
} fUI;

// ----------------------------------------------------------------------------------------------------------------


+ 7
- 7
source/plugin/carla-lv2.cpp View File

@@ -236,7 +236,7 @@ public:
fWorkerUISignal = 1;
const char* const msg((const char*)(event + 1));
const size_t msgSize = std::strlen(msg);
fWorker->schedule_work(fWorker->handle, msgSize+1, msg);
fWorker->schedule_work(fWorker->handle, static_cast<uint32_t>(msgSize + 1U), msg);
}
else
{
@@ -411,19 +411,19 @@ public:

char strBufIndex[8];
carla_zeroChars(strBufIndex, 8);
std::strncpy(strBufIndex, msgIndex, msgSplit-msgIndex);
std::strncpy(strBufIndex, msgIndex, static_cast<size_t>(msgSplit - msgIndex));

const int index = std::atoi(msgIndex) - fPorts.indexOffset;
const int index = std::atoi(msgIndex) - static_cast<int>(fPorts.indexOffset);
CARLA_SAFE_ASSERT_RETURN(index >= 0, LV2_WORKER_ERR_UNKNOWN);

double value;
float value;

{
const ScopedLocale csl;
value = std::atof(msgSplit+1);
value = static_cast<float>(std::atof(msgSplit+1));
}

fDescriptor->ui_set_parameter_value(fHandle, index, value);
fDescriptor->ui_set_parameter_value(fHandle, static_cast<uint32_t>(index), value);
}
}
else if (std::strcmp(msg, "show") == 0)
@@ -929,7 +929,7 @@ static LV2_Worker_Status lv2_work(LV2_Handle instance, LV2_Worker_Respond_Functi
return instancePtr->lv2_work(respond, handle, size, data);
}

LV2_Worker_Status lv2_work_resp(LV2_Handle instance, uint32_t size, const void* body)
static LV2_Worker_Status lv2_work_resp(LV2_Handle instance, uint32_t size, const void* body)
{
carla_debug("work_resp(%p, %u, %p)", instance, size, body);
return instancePtr->lv2_work_resp(size, body);


+ 31
- 29
source/plugin/carla-vst.cpp View File

@@ -26,7 +26,7 @@
#ifndef CARLA_PLUGIN_PATCHBAY
#error CARLA_PLUGIN_PATCHBAY undefined
#endif
#if CARLA_PLUGIN_32CH || CARLA_PLUGIN_16CH
#if defined(CARLA_PLUGIN_32CH) || defined(CARLA_PLUGIN_16CH)
#if ! CARLA_PLUGIN_SYNTH
#error CARLA_PLUGIN_16/32CH requires CARLA_PLUGIN_SYNTH
#endif
@@ -460,7 +460,9 @@ public:
fTimeInfo.bbt.beatType = 4.0f;
}

fTimeInfo.bbt.barStartTick = fTimeInfo.bbt.ticksPerBeat*fTimeInfo.bbt.beatsPerBar*(fTimeInfo.bbt.bar-1);
fTimeInfo.bbt.barStartTick = fTimeInfo.bbt.ticksPerBeat *
static_cast<double>(fTimeInfo.bbt.beatsPerBar) *
(fTimeInfo.bbt.bar - 1);
}

fMidiOutEvents.numEvents = 0;
@@ -720,7 +722,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
const NativePluginDescriptor* pluginDesc = nullptr;
PluginListManager& plm(PluginListManager::getInstance());

#if CARLA_VST_SHELL
#ifdef CARLA_VST_SHELL
if (effect->uniqueID == 0)
effect->uniqueID = kShellUniqueID;

@@ -737,13 +739,13 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
const int32_t plugIndex = effect->uniqueID - kShellUniqueID - 1;
CARLA_SAFE_ASSERT_RETURN(plugIndex >= 0, 0);

pluginDesc = plm.descs.getAt(plugIndex, nullptr);
pluginDesc = plm.descs.getAt(static_cast<size_t>(plugIndex), nullptr);

#else // CARLA_VST_SHELL

# if CARLA_PLUGIN_32CH
# if defined(CARLA_PLUGIN_32CH)
const char* const pluginLabel = "carlapatchbay32";
# elif CARLA_PLUGIN_16CH
# elif defined(CARLA_PLUGIN_16CH)
const char* const pluginLabel = "carlapatchbay16";
# elif CARLA_PLUGIN_PATCHBAY
const char* const pluginLabel = "carlapatchbay";
@@ -766,11 +768,11 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,

CARLA_SAFE_ASSERT_RETURN(pluginDesc != nullptr, 0);

#if CARLA_VST_SHELL
#ifdef CARLA_VST_SHELL
effect->numParams = 0;
effect->numPrograms = 0;
effect->numInputs = pluginDesc->audioIns;
effect->numOutputs = pluginDesc->audioOuts;
effect->numInputs = static_cast<int>(pluginDesc->audioIns);
effect->numOutputs = static_cast<int>(pluginDesc->audioOuts);

if (pluginDesc->hints & NATIVE_PLUGIN_HAS_UI)
effect->flags |= effFlagsHasEditor;
@@ -818,7 +820,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
return 0;

case effGetPlugCategory:
#if CARLA_VST_SHELL
#ifdef CARLA_VST_SHELL
if (validPlugin)
{
#if CARLA_PLUGIN_SYNTH
@@ -839,7 +841,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
case effGetEffectName:
if (char* const cptr = (char*)ptr)
{
#if CARLA_VST_SHELL
#if defined(CARLA_VST_SHELL)
if (validPlugin)
{
const NativePluginDescriptor* const desc = pluginPtr->getDescriptor();
@@ -849,9 +851,9 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
{
std::strncpy(cptr, "Carla-VstShell", 32);
}
#elif CARLA_PLUGIN_32CH
#elif defined(CARLA_PLUGIN_32CH)
std::strncpy(cptr, "Carla-Patchbay32", 32);
#elif CARLA_PLUGIN_16CH
#elif defined(CARLA_PLUGIN_16CH)
std::strncpy(cptr, "Carla-Patchbay16", 32);
#elif CARLA_PLUGIN_PATCHBAY
# if CARLA_PLUGIN_SYNTH
@@ -873,7 +875,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
case effGetVendorString:
if (char* const cptr = (char*)ptr)
{
#if CARLA_VST_SHELL
#ifdef CARLA_VST_SHELL
if (validPlugin)
{
const NativePluginDescriptor* const desc = pluginPtr->getDescriptor();
@@ -889,7 +891,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
case effGetProductString:
if (char* const cptr = (char*)ptr)
{
#if CARLA_VST_SHELL
#if defined(CARLA_VST_SHELL)
if (validPlugin)
{
const NativePluginDescriptor* const desc = pluginPtr->getDescriptor();
@@ -899,9 +901,9 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
{
std::strncpy(cptr, "CarlaVstShell", 32);
}
#elif CARLA_PLUGIN_32CH
#elif defined(CARLA_PLUGIN_32CH)
std::strncpy(cptr, "CarlaPatchbay32", 32);
#elif CARLA_PLUGIN_16CH
#elif defined(CARLA_PLUGIN_16CH)
std::strncpy(cptr, "CarlaPatchbay16", 32);
#elif CARLA_PLUGIN_PATCHBAY
# if CARLA_PLUGIN_SYNTH
@@ -926,7 +928,7 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,
case effGetVstVersion:
return kVstVersion;

#if CARLA_VST_SHELL
#ifdef CARLA_VST_SHELL
case effShellGetNextPlugin:
if (char* const cptr = (char*)ptr)
{
@@ -937,15 +939,15 @@ intptr_t vst_dispatcherCallback(AEffect* effect, int32_t opcode, int32_t index,

for (;;)
{
const uint index = effect->uniqueID - kShellUniqueID;
const uint index2 = static_cast<uint>(effect->uniqueID - kShellUniqueID);

if (index >= plm.descs.count())
if (index2 >= plm.descs.count())
{
effect->uniqueID = kShellUniqueID;
return 0;
}

const NativePluginDescriptor* const desc = plm.descs.getAt(index, nullptr);
const NativePluginDescriptor* const desc = plm.descs.getAt(index2, nullptr);
CARLA_SAFE_ASSERT_RETURN(desc != nullptr, 0);

++effect->uniqueID;
@@ -1001,14 +1003,14 @@ void vst_processReplacingCallback(AEffect* effect, float** inputs, float** outpu

const AEffect* VSTPluginMainInit(AEffect* const effect)
{
#if CARLA_VST_SHELL
#if defined(CARLA_VST_SHELL)
if (const intptr_t uniqueID = VSTAudioMaster(effect, audioMasterCurrentId, 0, 0, nullptr, 0.0f))
effect->uniqueID = uniqueID;
effect->uniqueID = static_cast<int>(uniqueID);
else
effect->uniqueID = kShellUniqueID;
#elif CARLA_PLUGIN_32CH
#elif defined(CARLA_PLUGIN_32CH)
effect->uniqueID = kBaseUniqueID+6;
#elif CARLA_PLUGIN_16CH
#elif defined(CARLA_PLUGIN_16CH)
effect->uniqueID = kBaseUniqueID+5;
#elif CARLA_PLUGIN_PATCHBAY
# if CARLA_PLUGIN_SYNTH
@@ -1027,13 +1029,13 @@ const AEffect* VSTPluginMainInit(AEffect* const effect)
// plugin fields
effect->numParams = 0;
effect->numPrograms = 0;
#if CARLA_VST_SHELL
#if defined(CARLA_VST_SHELL)
effect->numInputs = 0;
effect->numOutputs = 0;
#elif CARLA_PLUGIN_32CH
#elif defined(CARLA_PLUGIN_32CH)
effect->numInputs = 32;
effect->numOutputs = 32;
#elif CARLA_PLUGIN_16CH
#elif defined(CARLA_PLUGIN_16CH)
effect->numInputs = 16;
effect->numOutputs = 16;
#else
@@ -1044,7 +1046,7 @@ const AEffect* VSTPluginMainInit(AEffect* const effect)
// plugin flags
effect->flags |= effFlagsCanReplacing;
effect->flags |= effFlagsProgramChunks;
#if ! CARLA_VST_SHELL
#ifndef CARLA_VST_SHELL
effect->flags |= effFlagsHasEditor;
#endif
#if CARLA_PLUGIN_SYNTH


+ 3
- 0
source/plugin/ui_launcher.cpp View File

@@ -19,6 +19,7 @@
#include "dgl/ImageWidgets.hpp"
#include "CarlaNative.h"
#include "ui_launcher_res.hpp"
#include "CarlaDefines.h"

// --------------------------------------------------------------------------------------------------------------------

@@ -63,6 +64,8 @@ private:
ImageButton startButton;
const NativePluginDescriptor* const descriptor;
const NativePluginHandle handle;

CARLA_DECLARE_NON_COPY_CLASS(CarlaButtonWidget);
};

END_NAMESPACE_DGL


+ 16
- 8
source/utils/CarlaLv2Utils.hpp View File

@@ -1,6 +1,6 @@
/*
* Carla LV2 utils
* Copyright (C) 2011-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2011-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -546,9 +546,11 @@ public:
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Weffc++"
# pragma clang diagnostic ignored "-Wnon-virtual-dtor"
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Weffc++"
# pragma GCC diagnostic ignored "-Wnon-virtual-dtor"
#endif
template<class TimeInfoStruct>
class Lv2PluginBaseClass : public LV2_External_UI_Widget_Compat
@@ -755,7 +757,7 @@ public:

fTimeInfo.playing = carla_isNotZero(fLastPositionData.speed);

if (fTimeInfo.playing && fLastPositionData.beatsPerMinute > 0.0f)
if (fTimeInfo.playing && fLastPositionData.beatsPerMinute > 0.0)
{
fTimeInfo.bbt.beatsPerMinute = fLastPositionData.beatsPerMinute*
std::abs(fLastPositionData.speed);
@@ -914,9 +916,9 @@ public:
carla_stderr("Invalid lv2 frame value");
}

fTimeInfo.bbt.barStartTick = fTimeInfo.bbt.ticksPerBeat*
fTimeInfo.bbt.beatsPerBar*
(fTimeInfo.bbt.bar-1);
fTimeInfo.bbt.barStartTick = static_cast<double>(fTimeInfo.bbt.ticksPerBeat) *
static_cast<double>(fTimeInfo.bbt.beatsPerBar) *
(fTimeInfo.bbt.bar-1);

fTimeInfo.bbt.valid = (fLastPositionData.beatsPerMinute > 0.0 &&
fLastPositionData.beatUnit > 0 &&
@@ -1002,7 +1004,7 @@ public:
fLastPositionData.beatsPerBar);

const double rest = std::fmod(fLastPositionData.barBeat, 1.0f);
fTimeInfo.bbt.beat = static_cast<int32_t>(fLastPositionData.barBeat-rest+1.0);
fTimeInfo.bbt.beat = static_cast<int32_t>(static_cast<double>(fLastPositionData.barBeat)-rest+1.0);
fTimeInfo.bbt.tick = static_cast<int32_t>(rest*fTimeInfo.bbt.ticksPerBeat+0.5);

if (fLastPositionData.bar_f >= 0.0f)
@@ -1022,8 +1024,8 @@ public:

fTimeInfo.bbt.bar = fLastPositionData.bar + 1;

fTimeInfo.bbt.barStartTick = fTimeInfo.bbt.ticksPerBeat *
fTimeInfo.bbt.beatsPerBar *
fTimeInfo.bbt.barStartTick = static_cast<double>(fTimeInfo.bbt.ticksPerBeat) *
static_cast<double>(fTimeInfo.bbt.beatsPerBar) *
(fTimeInfo.bbt.bar-1);
}
}
@@ -1550,18 +1552,24 @@ private:

static void extui_run(LV2_External_UI_Widget_Compat* handle)
{
CARLA_SAFE_ASSERT_RETURN(handle != nullptr,);

handlePtr->handleUiRun();
}

static void extui_show(LV2_External_UI_Widget_Compat* handle)
{
CARLA_SAFE_ASSERT_RETURN(handle != nullptr,);
carla_debug("extui_show(%p)", handle);

handlePtr->handleUiShow();
}

static void extui_hide(LV2_External_UI_Widget_Compat* handle)
{
CARLA_SAFE_ASSERT_RETURN(handle != nullptr,);
carla_debug("extui_hide(%p)", handle);

handlePtr->handleUiHide();
}



+ 2
- 2
source/utils/CarlaPipeUtils.cpp View File

@@ -1,6 +1,6 @@
/*
* Carla Pipe Utilities
* Copyright (C) 2013-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -984,7 +984,7 @@ void CarlaPipeCommon::writeControlMessage(const uint32_t index, const float valu

{
const ScopedLocale csl;
std::snprintf(tmpBuf, 0xff, "%f\n", value);
std::snprintf(tmpBuf, 0xff, "%f\n", static_cast<double>(value));
}

if (! _writeMsgBuffer(tmpBuf, std::strlen(tmpBuf)))


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

@@ -1,6 +1,6 @@
/*
* Carla String
* Copyright (C) 2013-2018 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2013-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -176,7 +176,7 @@ public:
fBufferAlloc(false)
{
char strBuf[0xff+1];
std::snprintf(strBuf, 0xff, "%f", value);
std::snprintf(strBuf, 0xff, "%f", static_cast<double>(value));
strBuf[0xff] = '\0';

_dup(strBuf);
@@ -191,7 +191,7 @@ public:
fBufferAlloc(false)
{
char strBuf[0xff+1];
std::snprintf(strBuf, 0xff, "%g", value);
std::snprintf(strBuf, 0xff, "%f", value);
strBuf[0xff] = '\0';

_dup(strBuf);


Loading…
Cancel
Save