Browse Source

Fixup new code for -Weffc++

tags/1.9.8
falkTX 7 years ago
parent
commit
fcea66d79f
20 changed files with 239 additions and 98 deletions
  1. +1
    -0
      source/backend/CarlaEngine.hpp
  2. +2
    -1
      source/backend/engine/CarlaEngineData.cpp
  3. +2
    -4
      source/backend/engine/CarlaEngineGraph.cpp
  4. +15
    -11
      source/backend/engine/CarlaEngineInternal.cpp
  5. +2
    -0
      source/backend/engine/CarlaEngineInternal.hpp
  6. +2
    -2
      source/backend/engine/CarlaEngineJack.cpp
  7. +6
    -1
      source/backend/plugin/CarlaPluginBridge.cpp
  8. +8
    -2
      source/backend/plugin/CarlaPluginFluidSynth.cpp
  9. +1
    -1
      source/backend/plugin/CarlaPluginInternal.cpp
  10. +12
    -9
      source/backend/plugin/CarlaPluginJack.cpp
  11. +1
    -1
      source/backend/plugin/CarlaPluginLADSPA.cpp
  12. +6
    -1
      source/backend/plugin/CarlaPluginLV2.cpp
  13. +42
    -8
      source/bridges-plugin/CarlaBridgeLV2.cpp
  14. +36
    -28
      source/libjack/libjack.cpp
  15. +15
    -3
      source/libjack/libjack.hpp
  16. +4
    -4
      source/libjack/libjack_port-searching.cpp
  17. +25
    -8
      source/native-plugins/zynaddsubfx-fx.cpp
  18. +38
    -14
      source/native-plugins/zynaddsubfx-synth.cpp
  19. +1
    -0
      source/utils/CarlaMainLoop.hpp
  20. +20
    -0
      source/utils/CarlaMathUtils.hpp

+ 1
- 0
source/backend/CarlaEngine.hpp View File

@@ -260,6 +260,7 @@ struct CARLA_API EngineOptions {

Wine() noexcept;
~Wine() noexcept;
CARLA_DECLARE_NON_COPY_STRUCT(Wine)
} wine;

#ifndef DOXYGEN


+ 2
- 1
source/backend/engine/CarlaEngineData.cpp View File

@@ -215,7 +215,8 @@ EngineOptions::EngineOptions() noexcept
binaryDir(nullptr),
resourceDir(nullptr),
preventBadBehaviour(false),
frontendWinId(0) {}
frontendWinId(0),
wine() {}

EngineOptions::~EngineOptions() noexcept
{


+ 2
- 4
source/backend/engine/CarlaEngineGraph.cpp View File

@@ -975,10 +975,8 @@ void RackGraph::processHelper(CarlaEngine::ProtectedData* const data, const floa

EngineInternalGraph::EngineInternalGraph(CarlaEngine* const engine) noexcept
: fIsReady(false),
kEngine(engine)
{
fRack = nullptr;
}
fRack(nullptr),
kEngine(engine) {}

EngineInternalGraph::~EngineInternalGraph() noexcept
{


+ 15
- 11
source/backend/engine/CarlaEngineInternal.cpp View File

@@ -59,7 +59,7 @@ void EngineInternalEvents::clear() noexcept
// -----------------------------------------------------------------------
// InternalTime

static const float kTicksPerBeat = 1920.0f;
static const double kTicksPerBeat = 1920.0;

#if defined(HAVE_HYLIA) && !defined(BUILD_BRIDGE)
static uint32_t calculate_link_latency(const double bufferSize, const double sampleRate) noexcept
@@ -81,6 +81,9 @@ EngineInternalTime::EngineInternalTime(EngineTimeInfo& ti, const EngineTransport
tick(0.0),
needsReset(false),
nextFrame(0),
#ifndef BUILD_BRIDGE
hylia(),
#endif
timeInfo(ti),
transportMode(tm) {}

@@ -197,7 +200,7 @@ void EngineInternalTime::fillEngineTimeInfo(const uint32_t newFrames) noexcept
else
#endif
{
const double min = timeInfo.frame / (sampleRate * 60.0);
const double min = static_cast<double>(timeInfo.frame) / (sampleRate * 60.0);
abs_tick = min * beatsPerMinute * kTicksPerBeat;
abs_beat = abs_tick / kTicksPerBeat;
needsReset = false;
@@ -228,7 +231,7 @@ void EngineInternalTime::fillEngineTimeInfo(const uint32_t newFrames) noexcept
}
}

timeInfo.bbt.beatsPerBar = beatsPerBar;
timeInfo.bbt.beatsPerBar = static_cast<float>(beatsPerBar);
timeInfo.bbt.beatsPerMinute = beatsPerMinute;
timeInfo.bbt.tick = (int32_t)(ticktmp + 0.5);
tick = ticktmp;
@@ -302,7 +305,7 @@ void EngineInternalTime::fillJackTimeInfo(jack_position_t* const pos, const uint
}
}

pos->beats_per_bar = beatsPerBar;
pos->beats_per_bar = static_cast<float>(beatsPerBar);
pos->beats_per_minute = beatsPerMinute;
pos->tick = (int32_t)(ticktmp + 0.5);
tick = ticktmp;
@@ -318,12 +321,12 @@ void EngineInternalTime::preProcess(const uint32_t numFrames)
const double new_bpb = hylia.timeInfo.beatsPerBar;
const double new_bpm = hylia.timeInfo.beatsPerMinute;

if (new_bpb >= 1.0 && beatsPerBar != new_bpb)
if (new_bpb >= 1.0 && carla_isNotEqual(beatsPerBar, new_bpb))
{
beatsPerBar = new_bpb;
needsReset = true;
}
if (new_bpm > 0.0 && beatsPerMinute != new_bpm)
if (new_bpm > 0.0 && carla_isNotEqual(beatsPerMinute, new_bpm))
{
beatsPerMinute = new_bpm;
needsReset = true;
@@ -341,13 +344,14 @@ void EngineInternalTime::preProcess(const uint32_t numFrames)
#ifndef BUILD_BRIDGE
EngineInternalTime::Hylia::Hylia()
: enabled(false),
# ifdef HAVE_HYLIA
instance(hylia_create())
# else
instance(nullptr)
# endif
instance(nullptr),
timeInfo()
{
carla_zeroStruct(timeInfo);

# ifdef HAVE_HYLIA
instance = hylia_create();
# endif
}

EngineInternalTime::Hylia::~Hylia()


+ 2
- 0
source/backend/engine/CarlaEngineInternal.hpp View File

@@ -122,8 +122,10 @@ private:
bool enabled;
hylia_t* instance;
hylia_time_info_t timeInfo;

Hylia();
~Hylia();
CARLA_DECLARE_NON_COPY_STRUCT(Hylia)
} hylia;
#endif



+ 2
- 2
source/backend/engine/CarlaEngineJack.cpp View File

@@ -132,7 +132,7 @@ public:
}

if (! kIsInput)
carla_zeroFloats(fBuffer, static_cast<int>(bufferSize));
carla_zeroFloats(fBuffer, bufferSize);
}

void invalidate() noexcept
@@ -224,7 +224,7 @@ public:
}

if (! kIsInput)
carla_zeroFloats(fBuffer, static_cast<int>(bufferSize));
carla_zeroFloats(fBuffer, bufferSize);
}

void invalidate() noexcept


+ 6
- 1
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -90,6 +90,7 @@ public:
fBinary(),
fLabel(),
fShmIds(),
fWinePrefix(),
fProcess() {}

void setData(const char* const winePrefix,
@@ -328,10 +329,10 @@ private:
CarlaEngine* const kEngine;
CarlaPlugin* const kPlugin;

String fWinePrefix;
String fBinary;
String fLabel;
String fShmIds;
String fWinePrefix;

ScopedPointer<ChildProcess> fProcess;

@@ -360,6 +361,7 @@ public:
fShmRtClientControl(),
fShmNonRtClientControl(),
fShmNonRtServerControl(),
fWinePrefix(),
fInfo(),
fUniqueId(0),
fLatency(0),
@@ -1318,6 +1320,9 @@ public:
read += kBridgeBaseMidiOutHeaderSize + size;
}

// TODO
(void)port;

} // End of Control and MIDI Output
}



+ 8
- 2
source/backend/plugin/CarlaPluginFluidSynth.cpp View File

@@ -1408,10 +1408,16 @@ public:
carla_zeroFloats(fAudio16Buffers[i], frames);

// FIXME use '32' or '16' instead of outs
fluid_synth_process(fSynth, frames, 0, nullptr, static_cast<int>(pData->audioOut.count), fAudio16Buffers);
fluid_synth_process(fSynth, static_cast<int>(frames),
0, nullptr,
static_cast<int>(pData->audioOut.count), fAudio16Buffers);
}
else
fluid_synth_write_float(fSynth, frames, outBuffer[0] + timeOffset, 0, 1, outBuffer[1] + timeOffset, 0, 1);
{
fluid_synth_write_float(fSynth, static_cast<int>(frames),
outBuffer[0] + timeOffset, 0, 1,
outBuffer[1] + timeOffset, 0, 1);
}

#ifndef BUILD_BRIDGE
// --------------------------------------------------------------------------------------------------------


+ 1
- 1
source/backend/plugin/CarlaPluginInternal.cpp View File

@@ -467,7 +467,7 @@ void CarlaPlugin::ProtectedData::Latency::recreateBuffers(const uint32_t newChan
{
const uint32_t diff = frames - oldFrames;
carla_zeroFloats(buffers[i], diff);
carla_copyFloats(buffers[i] + diff, oldBuffers[i], static_cast<int>(oldFrames));
carla_copyFloats(buffers[i] + diff, oldBuffers[i], oldFrames);
}
}
else


+ 12
- 9
source/backend/plugin/CarlaPluginJack.cpp View File

@@ -452,7 +452,7 @@ public:
CarlaString portName;

// Audio Ins
for (uint32_t j=0; j < fInfo.aIns; ++j)
for (uint8_t j=0; j < fInfo.aIns; ++j)
{
portName.clear();

@@ -479,7 +479,7 @@ public:
}

// Audio Outs
for (uint32_t j=0; j < fInfo.aOuts; ++j)
for (uint8_t j=0; j < fInfo.aOuts; ++j)
{
portName.clear();

@@ -871,6 +871,9 @@ public:
read += kBridgeBaseMidiOutHeaderSize + size;
}

// TODO
(void)port;

} // End of Control and MIDI Output
}

@@ -1219,10 +1222,10 @@ public:
CARLA_SAFE_ASSERT_RETURN(label[i] >= '0' && label[i] < '0'+0x4f, false);
}

fInfo.aIns = label[0] - '0';
fInfo.aOuts = label[1] - '0';
fInfo.mIns = carla_minPositive(label[2] - '0', 1);
fInfo.mOuts = carla_minPositive(label[3] - '0', 1);
fInfo.aIns = static_cast<uint8_t>(label[0] - '0');
fInfo.aOuts = static_cast<uint8_t>(label[1] - '0');
fInfo.mIns = static_cast<uint8_t>(carla_minPositive(label[2] - '0', 1));
fInfo.mOuts = static_cast<uint8_t>(carla_minPositive(label[3] - '0', 1));

fInfo.setupLabel = label;

@@ -1339,8 +1342,8 @@ private:
BridgeNonRtServerControl fShmNonRtServerControl;

struct Info {
uint32_t aIns, aOuts;
uint32_t mIns, mOuts;
uint8_t aIns, aOuts;
uint8_t mIns, mOuts;
uint optionsAvailable;
CarlaString setupLabel;
std::vector<uint8_t> chunk;
@@ -1377,7 +1380,7 @@ private:

void resizeAudioPool(const uint32_t bufferSize)
{
fShmAudioPool.resize(bufferSize, fInfo.aIns+fInfo.aOuts, 0);
fShmAudioPool.resize(bufferSize, static_cast<uint32_t>(fInfo.aIns+fInfo.aOuts), 0);

fShmRtClientControl.writeOpcode(kPluginBridgeRtClientSetAudioPool);
fShmRtClientControl.writeULong(static_cast<uint64_t>(fShmAudioPool.dataSize));


+ 1
- 1
source/backend/plugin/CarlaPluginLADSPA.cpp View File

@@ -1263,7 +1263,7 @@ public:
if (latframes <= frames)
{
for (uint32_t i=0; i < pData->audioIn.count; ++i)
carla_copyFloats(pData->latency.buffers[i], audioIn[i]+(frames-latframes), static_cast<int>(latframes));
carla_copyFloats(pData->latency.buffers[i], audioIn[i]+(frames-latframes), latframes);
}
else
{


+ 6
- 1
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -4537,8 +4537,10 @@ public:
LV2_Inline_Display_Image_Surface* renderInlineDisplay(int width, int height)
{
CARLA_SAFE_ASSERT_RETURN(fExt.inlineDisplay != nullptr && fExt.inlineDisplay->render != nullptr, nullptr);
CARLA_SAFE_ASSERT_RETURN(width > 0, nullptr);
CARLA_SAFE_ASSERT_RETURN(height > 0, nullptr);

return fExt.inlineDisplay->render(fHandle, width, height);
return fExt.inlineDisplay->render(fHandle, static_cast<uint32_t>(width), static_cast<uint32_t>(height));
}

// -------------------------------------------------------------------
@@ -6314,6 +6316,9 @@ CarlaPlugin* CarlaPlugin::newLV2(const Initializer& init)
return plugin;
}

// used in CarlaStandalone.cpp
void* carla_render_inline_display_lv2(CarlaPlugin* plugin, int width, int height);

void* carla_render_inline_display_lv2(CarlaPlugin* plugin, int width, int height)
{
CarlaPluginLV2* const lv2Plugin = (CarlaPluginLV2*)plugin;


+ 42
- 8
source/bridges-plugin/CarlaBridgeLV2.cpp View File

@@ -30,18 +30,49 @@
#include "AppConfig.h"
#include "juce_core/juce_core.h"

// ---------------------------------------------------------------------------------------------------------------------
// -Weffc++ compat ext widget

extern "C" {

typedef struct _LV2_External_UI_Widget_Compat {
void (*run )(struct _LV2_External_UI_Widget_Compat*);
void (*show)(struct _LV2_External_UI_Widget_Compat*);
void (*hide)(struct _LV2_External_UI_Widget_Compat*);

_LV2_External_UI_Widget_Compat() noexcept
: run(nullptr), show(nullptr), hide(nullptr) {}

} LV2_External_UI_Widget_Compat;

}

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

CARLA_BACKEND_START_NAMESPACE

#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Weffc++"
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Weffc++"
#endif
class CarlaEngineLV2Single : public CarlaEngine,
public LV2_External_UI_Widget
public LV2_External_UI_Widget_Compat
{
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
#endif
public:
CarlaEngineLV2Single(const uint32_t bufferSize, const double sampleRate, const char* const bundlePath, const LV2_URID_Map* uridMap)
: fPlugin(nullptr),
fIsActive(false),
fIsOffline(false)
fIsOffline(false),
fPorts(),
fUI()
{
run = extui_run;
show = extui_show;
@@ -326,8 +357,11 @@ protected:
switch (action)
{
case ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED:
CARLA_SAFE_ASSERT_RETURN(value1 >= 0,);
if (fUI.writeFunction != nullptr && fUI.controller != nullptr && fUI.visible)
fUI.writeFunction(fUI.controller, value1+fPorts.indexOffset, sizeof(float), 0, &value3);
fUI.writeFunction(fUI.controller,
static_cast<uint32_t>(value1)+fPorts.indexOffset,
sizeof(float), 0, &value3);
break;

case ENGINE_CALLBACK_UI_STATE_CHANGED:
@@ -524,7 +558,6 @@ private:
}

CARLA_DECLARE_NON_COPY_STRUCT(Ports);

} fPorts;

struct UI {
@@ -538,25 +571,26 @@ private:
: writeFunction(nullptr),
controller(nullptr),
host(nullptr),
name(),
visible(false) {}
CARLA_DECLARE_NON_COPY_STRUCT(UI)
} fUI;

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

#define handlePtr ((CarlaEngineLV2Single*)handle)

static void extui_run(LV2_External_UI_Widget* handle)
static void extui_run(LV2_External_UI_Widget_Compat* handle)
{
handlePtr->handleUiRun();
}

static void extui_show(LV2_External_UI_Widget* handle)
static void extui_show(LV2_External_UI_Widget_Compat* handle)
{
handlePtr->handleUiShow();
}

static void extui_hide(LV2_External_UI_Widget* handle)
static void extui_hide(LV2_External_UI_Widget_Compat* handle)
{
handlePtr->handleUiHide();
}


+ 36
- 28
source/libjack/libjack.cpp View File

@@ -57,6 +57,8 @@ protected:

private:
Callback* const fCallback;

CARLA_DECLARE_NON_COPY_CLASS(CarlaJackRealtimeThread)
};

// --------------------------------------------------------------------------------------------------------------------
@@ -82,6 +84,8 @@ protected:

private:
Callback* const fCallback;

CARLA_DECLARE_NON_COPY_CLASS(CarlaJackNonRealtimeThread)
};

static int carla_interposed_callback(int, void*);
@@ -97,6 +101,11 @@ public:

CarlaJackAppClient()
: fServer(this),
fClients(),
fShmAudioPool(),
fShmRtClientControl(),
fShmNonRtClientControl(),
fShmNonRtServerControl(),
fAudioPoolCopy(nullptr),
fAudioTmpBuf(nullptr),
fDummyMidiInBuffer(true, "ignored"),
@@ -141,10 +150,10 @@ public:
fBaseNameNonRtClientControl[6] = '\0';
fBaseNameNonRtServerControl[6] = '\0';

fServer.numAudioIns = libjackSetup[0] - '0';
fServer.numAudioOuts = libjackSetup[1] - '0';
fServer.numMidiIns = libjackSetup[2] - '0';
fServer.numMidiOuts = libjackSetup[3] - '0';
fServer.numAudioIns = static_cast<uint8_t>(libjackSetup[0] - '0');
fServer.numAudioOuts = static_cast<uint8_t>(libjackSetup[1] - '0');
fServer.numMidiIns = static_cast<uint8_t>(libjackSetup[2] - '0');
fServer.numMidiOuts = static_cast<uint8_t>(libjackSetup[3] - '0');

fSessionManager = libjackSetup[4] - '0';
fSetupHints = libjackSetup[5] - '0';
@@ -483,25 +492,24 @@ bool CarlaJackAppClient::handleRtData()
}
break;

case kPluginBridgeRtClientSetSampleRate:
if (const double newSampleRate = fShmRtClientControl.readDouble())
case kPluginBridgeRtClientSetSampleRate: {
const double newSampleRate = fShmRtClientControl.readDouble();

if (carla_isNotZero(newSampleRate) && carla_isNotEqual(fServer.sampleRate, newSampleRate))
{
if (fServer.sampleRate != newSampleRate)
{
const CarlaMutexLocker cml(fRealtimeThreadMutex);
const CarlaMutexLocker cml(fRealtimeThreadMutex);

fServer.sampleRate = newSampleRate;
fServer.sampleRate = newSampleRate;

for (LinkedList<JackClientState*>::Itenerator it = fClients.begin2(); it.valid(); it.next())
{
JackClientState* const jclient(it.getValue(nullptr));
CARLA_SAFE_ASSERT_CONTINUE(jclient != nullptr);
for (LinkedList<JackClientState*>::Itenerator it = fClients.begin2(); it.valid(); it.next())
{
JackClientState* const jclient(it.getValue(nullptr));
CARLA_SAFE_ASSERT_CONTINUE(jclient != nullptr);

jclient->sampleRateCb(fServer.sampleRate, jclient->sampleRateCbPtr);
}
jclient->sampleRateCb(static_cast<uint32_t>(fServer.sampleRate), jclient->sampleRateCbPtr);
}
}
break;
} break;

case kPluginBridgeRtClientSetOnline:
// TODO inform changes
@@ -627,9 +635,9 @@ bool CarlaJackAppClient::handleRtData()

// set audio inputs
i = 0;
for (LinkedList<JackPortState*>::Itenerator it = jclient->audioIns.begin2(); it.valid(); it.next())
for (LinkedList<JackPortState*>::Itenerator it2 = jclient->audioIns.begin2(); it2.valid(); it2.next())
{
JackPortState* const jport = it.getValue(nullptr);
JackPortState* const jport = it2.getValue(nullptr);
CARLA_SAFE_ASSERT_CONTINUE(jport != nullptr);

if (i++ < fServer.numAudioIns)
@@ -660,9 +668,9 @@ bool CarlaJackAppClient::handleRtData()

// set audio ouputs
i = 0;
for (LinkedList<JackPortState*>::Itenerator it = jclient->audioOuts.begin2(); it.valid(); it.next())
for (LinkedList<JackPortState*>::Itenerator it2 = jclient->audioOuts.begin2(); it2.valid(); it2.next())
{
JackPortState* const jport = it.getValue(nullptr);
JackPortState* const jport = it2.getValue(nullptr);
CARLA_SAFE_ASSERT_CONTINUE(jport != nullptr);

if (i++ < fServer.numAudioOuts)
@@ -685,9 +693,9 @@ bool CarlaJackAppClient::handleRtData()

// set midi inputs
i = 0;
for (LinkedList<JackPortState*>::Itenerator it = jclient->midiIns.begin2(); it.valid(); it.next())
for (LinkedList<JackPortState*>::Itenerator it2 = jclient->midiIns.begin2(); it2.valid(); it2.next())
{
JackPortState* const jport = it.getValue(nullptr);
JackPortState* const jport = it2.getValue(nullptr);
CARLA_SAFE_ASSERT_CONTINUE(jport != nullptr);

if (i++ < fServer.numMidiIns)
@@ -698,9 +706,9 @@ bool CarlaJackAppClient::handleRtData()

// set midi outputs
i = 0;
for (LinkedList<JackPortState*>::Itenerator it = jclient->midiOuts.begin2(); it.valid(); it.next())
for (LinkedList<JackPortState*>::Itenerator it2 = jclient->midiOuts.begin2(); it2.valid(); it2.next())
{
JackPortState* const jport = it.getValue(nullptr);
JackPortState* const jport = it2.getValue(nullptr);
CARLA_SAFE_ASSERT_CONTINUE(jport != nullptr);

if (i++ < fServer.numMidiOuts)
@@ -739,9 +747,9 @@ bool CarlaJackAppClient::handleRtData()

if (jclient->audioOuts.count() == 1 && fServer.numAudioOuts > 1)
{
for (uint8_t i=1; i<fServer.numAudioOuts; ++i)
for (uint8_t j=1; j<fServer.numAudioOuts; ++j)
{
carla_copyFloats(fdataRealOuts+(fServer.bufferSize*i),
carla_copyFloats(fdataRealOuts+(fServer.bufferSize*j),
fdataCopyOuts,
fServer.bufferSize);
}
@@ -1051,7 +1059,7 @@ void CarlaJackAppClient::runNonRealtimeThread()
}
else if (JackClientState* const jclient = fClients.getLast(nullptr))
{
const CarlaMutexLocker cms(jclient->mutex);
const CarlaMutexLocker cms2(jclient->mutex);
activated = jclient->activated;
}
else


+ 15
- 3
source/libjack/libjack.hpp View File

@@ -91,6 +91,8 @@ struct JackMidiPortBuffer {
delete[] events;
delete[] bufferPool;
}

CARLA_DECLARE_NON_COPY_STRUCT(JackMidiPortBuffer)
};

struct JackPortState {
@@ -112,7 +114,8 @@ struct JackPortState {
flags(0),
isMidi(false),
isSystem(false),
isConnected(false) {}
isConnected(false),
unused(false) {}

JackPortState(const char* const cn, const char* const pn, const uint i, const uint f,
const bool midi, const bool sys, const bool con)
@@ -123,7 +126,8 @@ struct JackPortState {
flags(f),
isMidi(midi),
isSystem(sys),
isConnected(con)
isConnected(con),
unused(false)
{
char strBuf[STR_MAX+1];
snprintf(strBuf, STR_MAX, "%s:%s", cn, pn);
@@ -137,6 +141,8 @@ struct JackPortState {
free(name);
free(fullname);
}

CARLA_DECLARE_NON_COPY_STRUCT(JackPortState)
};

struct JackClientState {
@@ -176,6 +182,7 @@ struct JackClientState {

JackClientState(const JackServerState& s, const char* const n)
: server(s),
mutex(),
activated(false),
deactivated(false),
name(strdup(n)),
@@ -232,6 +239,8 @@ struct JackClientState {
audioIns.clear();
audioOuts.clear();
}

CARLA_DECLARE_NON_COPY_STRUCT(JackClientState)
};

struct JackServerState {
@@ -256,10 +265,13 @@ struct JackServerState {
numAudioOuts(0),
numMidiIns(0),
numMidiOuts(0),
playing(false)
playing(false),
position()
{
carla_zeroStruct(position);
}

CARLA_DECLARE_NON_COPY_STRUCT(JackServerState)
};

CARLA_BACKEND_END_NAMESPACE


+ 4
- 4
source/libjack/libjack_port-searching.cpp View File

@@ -85,12 +85,12 @@ jack_port_t* jack_port_by_name(jack_client_t* client, const char* name)
const int commonFlags = JackPortIsPhysical|JackPortIsTerminal;

static const JackPortState capturePorts[] = {
JackPortState("system", "capture_1", 0, JackPortIsOutput|commonFlags, false, true, jserver.numAudioIns > 0),
JackPortState("system", "capture_2", 1, JackPortIsOutput|commonFlags, false, true, jserver.numAudioIns > 1),
{ "system", "capture_1", 0, JackPortIsOutput|commonFlags, false, true, jserver.numAudioIns > 0 },
{ "system", "capture_2", 1, JackPortIsOutput|commonFlags, false, true, jserver.numAudioIns > 1 },
};
static const JackPortState playbackPorts[] = {
JackPortState("system", "playback_1", 3, JackPortIsInput|commonFlags, false, true, jserver.numAudioOuts > 0),
JackPortState("system", "playback_2", 4, JackPortIsInput|commonFlags, false, true, jserver.numAudioOuts > 1),
{ "system", "playback_1", 3, JackPortIsInput|commonFlags, false, true, jserver.numAudioOuts > 0 },
{ "system", "playback_2", 4, JackPortIsInput|commonFlags, false, true, jserver.numAudioOuts > 1 },
};

if (std::strncmp(name, "system:", 7) == 0)


+ 25
- 8
source/native-plugins/zynaddsubfx-fx.cpp View File

@@ -18,6 +18,19 @@
#include "CarlaNative.hpp"
#include "CarlaMathUtils.hpp"

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

#include "Misc/Allocator.h"
#include "Effects/Alienwah.h"
#include "Effects/Chorus.h"
#include "Effects/Distorsion.h"
@@ -25,13 +38,17 @@
#include "Effects/Echo.h"
#include "Effects/Phaser.h"
#include "Effects/Reverb.h"
#include "Misc/Allocator.h"

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

#include "AppConfig.h"
#include "juce_core/juce_core.h"

using juce::roundToIntAccurate;
using juce::SharedResourcePointer;

using namespace zyncarla;

@@ -53,7 +70,8 @@ protected:
fFilterParams(nullptr),
fEffect(nullptr),
efxoutl(nullptr),
efxoutr(nullptr)
efxoutr(nullptr),
fAllocator()
{
efxoutl = new float[fBufferSize];
efxoutr = new float[fBufferSize];
@@ -120,7 +138,7 @@ protected:

void setMidiProgram(const uint8_t, const uint32_t, const uint32_t program) final
{
fNextProgram = program;
fNextProgram = static_cast<int32_t>(program);
}

// -------------------------------------------------------------------
@@ -197,7 +215,7 @@ protected:

void sampleRateChanged(const double sampleRate) final
{
if (fSampleRate == sampleRate)
if (carla_isEqual(fSampleRate, sampleRate))
return;

fSampleRate = sampleRate;
@@ -217,7 +235,7 @@ protected:
delete fEffect;
}

EffectParams pars(fAllocator.getObject(), false, efxoutl, efxoutr, 0,
EffectParams pars(fAllocator, false, efxoutl, efxoutr, 0,
static_cast<uint>(fSampleRate), static_cast<int>(fBufferSize), &fFilterParams);

fEffect = new ZynFX(pars);
@@ -257,8 +275,7 @@ protected:
float* efxoutl;
float* efxoutr;

// FIXME - is this thread-safe?
SharedResourcePointer<AllocatorClass> fAllocator;
AllocatorClass fAllocator;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(FxAbstractPlugin)
};


+ 38
- 14
source/native-plugins/zynaddsubfx-synth.cpp View File

@@ -23,14 +23,32 @@
#include "CarlaMathUtils.hpp"
#include "distrho/extra/ScopedPointer.hpp"

#include <ctime>
#include <set>
#include <string>

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

#include "Misc/Master.h"
#include "Misc/MiddleWare.h"
#include "Misc/Part.h"
#include "Misc/Util.h"

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

#include "AppConfig.h"
#include "juce_core/juce_core.h"
@@ -83,7 +101,7 @@ public:
// refresh banks
master.bank.rescanforbanks();

for (std::size_t i=0, size=master.bank.banks.size(); i<size; ++i)
for (std::uint32_t i=0, size=static_cast<uint32_t>(master.bank.banks.size()); i<size; ++i)
{
const std::string dir(master.bank.banks[i].dir);

@@ -99,7 +117,7 @@ public:
if (instrument.name.empty() || instrument.name[0] == ' ')
continue;

programs.push_back(new ProgramInfo(i+1, ninstrument, instrument.name.c_str(), instrument.filename.c_str()));
programs.push_back(new ProgramInfo(i+1U, ninstrument, instrument.name.c_str(), instrument.filename.c_str()));
}
}

@@ -293,6 +311,7 @@ public:
fMiddleWare(nullptr),
fMaster(nullptr),
fSynth(),
fConfig(),
fDefaultState(nullptr),
fMutex(),
fMiddleWareThread(new MiddleWareThread())
@@ -986,29 +1005,34 @@ private:
++msgtmp;
}

const int partn = std::atoi(partnstr);
const int ipartn = std::atoi(partnstr);
CARLA_SAFE_ASSERT_RETURN(ipartn >= 0,);

const uint partn = static_cast<uint>(ipartn);
++msgtmp;

/**/ if (std::strcmp(msgtmp, "Penabled") == 0)
{
const int index = kParamPart01Enabled+partn;
const bool enbl = rtosc_argument(msg,0).T;
const uint index = kParamPart01Enabled+partn;
const bool enable = rtosc_argument(msg,0).T;

fParameters[index] = enbl ? 1.0f : 0.0f;
uiParameterChanged(kParamPart01Enabled+partn, enbl ? 1.0f : 0.0f);
fParameters[index] = enable ? 1.0f : 0.0f;
uiParameterChanged(kParamPart01Enabled+partn, enable ? 1.0f : 0.0f);
}
else if (std::strcmp(msgtmp, "Pvolume") == 0)
{
const int index = kParamPart01Volume+partn;
const int value = rtosc_argument(msg,0).i;
const uint index = kParamPart01Volume+partn;
const int ivalue = rtosc_argument(msg,0).i;
const float value = static_cast<float>(ivalue);

fParameters[index] = value;
uiParameterChanged(kParamPart01Volume+partn, value);
}
else if (std::strcmp(msgtmp, "Ppanning") == 0)
{
const int index = kParamPart01Panning+partn;
const int value = rtosc_argument(msg,0).i;
const uint index = kParamPart01Panning+partn;
const int ivalue = rtosc_argument(msg,0).i;
const float value = static_cast<float>(ivalue);

fParameters[index] = value;
uiParameterChanged(kParamPart01Panning+partn, value);


+ 1
- 0
source/utils/CarlaMainLoop.hpp View File

@@ -25,6 +25,7 @@

CARLA_BACKEND_START_NAMESPACE

static inline
bool runMainLoopOnce()
{
#if defined(CARLA_OS_WIN)


+ 20
- 0
source/utils/CarlaMathUtils.hpp View File

@@ -230,6 +230,26 @@ float carla_findMaxNormalizedFloat(float floats[], const std::size_t count)
return maxf2;
}

/*
* Multiply an array with a fixed value, float-specific version.
*/
static inline
void carla_multiply(float data[], const float& multiplier, const std::size_t count) noexcept
{
CARLA_SAFE_ASSERT_RETURN(data != nullptr,);
CARLA_SAFE_ASSERT_RETURN(count > 0,);

if (carla_isZero(multiplier))
{
std::memset(data, 0, count*sizeof(float));
}
else
{
for (std::size_t i=0; i<count; ++i)
*data++ *= multiplier;
}
}

// --------------------------------------------------------------------------------------------------------------------
// Missing functions in old OSX versions.



Loading…
Cancel
Save