Browse Source

Fix UI bridges for -Weffc++

tags/1.9.5
falkTX 11 years ago
parent
commit
87eecb8553
9 changed files with 100 additions and 99 deletions
  1. +2
    -1
      source/bridges-ui/CarlaBridgeClient.cpp
  2. +2
    -2
      source/bridges-ui/CarlaBridgeClient.hpp
  3. +7
    -3
      source/bridges-ui/CarlaBridgeOsc.cpp
  4. +3
    -2
      source/bridges-ui/CarlaBridgeToolkit.hpp
  5. +4
    -1
      source/bridges-ui/CarlaBridgeToolkitGtk.cpp
  6. +7
    -2
      source/bridges-ui/CarlaBridgeToolkitPlugin.cpp
  7. +13
    -4
      source/bridges-ui/CarlaBridgeToolkitQt.cpp
  8. +24
    -17
      source/bridges-ui/CarlaBridgeUI-LV2.cpp
  9. +38
    -67
      source/bridges-ui/CarlaBridgeUI-VST.cpp

+ 2
- 1
source/bridges-ui/CarlaBridgeClient.cpp View File

@@ -25,7 +25,8 @@ CARLA_BRIDGE_START_NAMESPACE
CarlaBridgeClient::CarlaBridgeClient(const char* const uiTitle)
: fOsc(this),
fOscData(fOsc.getControlData()),
fUI(CarlaBridgeToolkit::createNew(this, uiTitle))
fUI(CarlaBridgeToolkit::createNew(this, uiTitle)),
leakDetector_CarlaBridgeClient()
{
CARLA_ASSERT(uiTitle != nullptr && uiTitle[0] != '\0');
carla_debug("CarlaBridgeClient::CarlaBridgeClient(\"%s\")", uiTitle);


+ 2
- 2
source/bridges-ui/CarlaBridgeClient.hpp View File

@@ -110,6 +110,7 @@ private:

UI(CarlaBridgeToolkit* const toolkit_)
: toolkit(toolkit_),
filename(),
lib(nullptr),
quit(false)
{
@@ -135,8 +136,7 @@ private:

#ifdef CARLA_PROPER_CPP11_SUPPORT
UI() = delete;
UI(UI&) = delete;
UI(const UI&) = delete;
CARLA_DECLARE_NON_COPY_STRUCT(UI)
#endif
} fUI;



+ 7
- 3
source/bridges-ui/CarlaBridgeOsc.cpp View File

@@ -24,7 +24,11 @@ CARLA_BRIDGE_START_NAMESPACE

CarlaBridgeOsc::CarlaBridgeOsc(CarlaBridgeClient* const client)
: kClient(client),
fServer(nullptr)
fControlData(),
fName(),
fServerPath(),
fServer(nullptr),
leakDetector_CarlaBridgeOsc()
{
CARLA_ASSERT(client != nullptr);
carla_debug("CarlaBridgeOsc::CarlaBridgeOsc(%p)", client);
@@ -288,11 +292,11 @@ int CarlaBridgeOsc::handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS)

const uint8_t* const data = argv[0]->m;
uint8_t status = data[1];
uint8_t channel = status & 0x0F;
uint8_t channel = status & MIDI_CHANNEL_BIT;

// Fix bad note-off
if (MIDI_IS_STATUS_NOTE_ON(status) && data[3] == 0)
status -= 0x10;
status = uint8_t(MIDI_STATUS_NOTE_OFF | (channel & MIDI_CHANNEL_BIT));

if (MIDI_IS_STATUS_NOTE_OFF(status))
{


+ 3
- 2
source/bridges-ui/CarlaBridgeToolkit.hpp View File

@@ -49,9 +49,10 @@ protected:

CarlaBridgeToolkit(CarlaBridgeClient* const client, const char* const windowTitle)
: kClient(client),
kWindowTitle(windowTitle) {}
kWindowTitle(windowTitle),
leakDetector_CarlaBridgeToolkit() {}

CARLA_LEAK_DETECTOR(CarlaBridgeToolkit)
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgeToolkit)
};

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


+ 4
- 1
source/bridges-ui/CarlaBridgeToolkitGtk.cpp View File

@@ -39,7 +39,8 @@ public:
fLastX(0),
fLastY(0),
fLastWidth(0),
fLastHeight(0)
fLastHeight(0),
leakDetector_CarlaBridgeToolkitGtk()
{
carla_debug("CarlaBridgeToolkitGtk::CarlaBridgeToolkitGtk(%p, \"%s\")", client, windowTitle);
}
@@ -186,6 +187,8 @@ private:

return false;
}

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgeToolkitGtk)
};

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


+ 7
- 2
source/bridges-ui/CarlaBridgeToolkitPlugin.cpp View File

@@ -31,7 +31,8 @@ public:
CarlaBridgeToolkitPlugin(CarlaBridgeClient* const client, const char* const windowTitle)
: CarlaBridgeToolkit(client, windowTitle),
fUI(nullptr),
fIdling(false)
fIdling(false),
leakDetector_CarlaBridgeToolkitPlugin()
{
carla_debug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p, \"%s\")", client, windowTitle);
}
@@ -112,9 +113,11 @@ public:
void resize(int width, int height) override
{
CARLA_SAFE_ASSERT_RETURN(fUI != nullptr,);
CARLA_SAFE_ASSERT_RETURN(width >= 0,);
CARLA_SAFE_ASSERT_RETURN(height >= 0,);
carla_debug("CarlaBridgeToolkitPlugin::resize(%i, %i)", width, height);

fUI->setSize(width, height, false);
fUI->setSize(static_cast<uint>(width), static_cast<uint>(height), false);
}

void* getContainerId() const override
@@ -150,6 +153,8 @@ protected:
private:
CarlaPluginUI* fUI;
bool fIdling;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgeToolkitPlugin)
};

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


+ 13
- 4
source/bridges-ui/CarlaBridgeToolkitQt.cpp View File

@@ -51,7 +51,8 @@ public:
fApp(nullptr),
fWindow(nullptr),
fMsgTimer(0),
fNeedsShow(false)
fNeedsShow(false),
leakDetector_CarlaBridgeToolkitQt()
{
carla_debug("CarlaBridgeToolkitQt::CarlaBridgeToolkitQt(%p, \"%s\")", client, windowTitle);

@@ -208,12 +209,12 @@ protected:
}

private:
void timerEvent(QTimerEvent* const event)
void timerEvent(QTimerEvent* const ev)
{
if (event->timerId() == fMsgTimer)
if (ev->timerId() == fMsgTimer)
handleTimeout();

QObject::timerEvent(event);
QObject::timerEvent(ev);
}

signals:
@@ -233,6 +234,10 @@ private slots:
else
fWindow->setFixedSize(width, height);
}

#ifndef MOC_PARSING
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgeToolkitQt)
#endif
};

#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
@@ -254,6 +259,10 @@ CARLA_BRIDGE_END_NAMESPACE

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

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

#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
# include "resources.qt5.cpp"
#else


+ 24
- 17
source/bridges-ui/CarlaBridgeUI-LV2.cpp View File

@@ -32,8 +32,9 @@ CARLA_BRIDGE_START_NAMESPACE

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

static uint32_t gBufferSize = 1024;
static double gSampleRate = 44100.0;
//static uint32_t gBufferSize = 1024;
static int gBufferSizei = 1024;
static double gSampleRate = 44100.0;

// Maximum default buffer size
const unsigned int MAX_DEFAULT_BUFFER_SIZE = 8192; // 0x2000
@@ -194,12 +195,16 @@ public:
fDescriptor(nullptr),
fRdfDescriptor(nullptr),
fRdfUiDescriptor(nullptr),
fOptions(),
fIsReady(false),
#if defined(BRIDGE_COCOA) || defined(BRIDGE_HWND) || defined(BRIDGE_X11)
fIsResizable(false)
fIsResizable(false),
#else
fIsResizable(true)
fIsResizable(true),
#endif
fCustomURIDs(),
fExt(),
leakDetector_CarlaLv2Client()
{
carla_fill<LV2_Feature*>(fFeatures, nullptr, kFeatureCount+1);

@@ -209,8 +214,8 @@ public:
// ---------------------------------------------------------------
// initialize options

fOptions.minBufferSize = gBufferSize;
fOptions.maxBufferSize = gBufferSize;
fOptions.minBufferSize = gBufferSizei;
fOptions.maxBufferSize = gBufferSizei;
fOptions.sampleRate = gSampleRate;

// ---------------------------------------------------------------
@@ -449,9 +454,10 @@ public:
// -----------------------------------------------------------
// check if not resizable

for (uint32_t i=0; i < fRdfUiDescriptor->FeatureCount && fIsResizable; ++i)
for (uint32_t j=0; j < fRdfUiDescriptor->FeatureCount && fIsResizable; ++j)
{
if (std::strcmp(fRdfUiDescriptor->Features[i].URI, LV2_UI__fixedSize) == 0 || std::strcmp(fRdfUiDescriptor->Features[i].URI, LV2_UI__noUserResize) == 0)
if (std::strcmp(fRdfUiDescriptor->Features[j].URI, LV2_UI__fixedSize ) == 0 ||
std::strcmp(fRdfUiDescriptor->Features[j].URI, LV2_UI__noUserResize) == 0)
{
fIsResizable = false;
break;
@@ -515,11 +521,12 @@ public:
{
CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr,)
CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr,);
CARLA_SAFE_ASSERT_RETURN(rindex >= 0,)

if (fDescriptor->port_event == nullptr)
return;

fDescriptor->port_event(fHandle, rindex, sizeof(float), 0, &value);
fDescriptor->port_event(fHandle, static_cast<uint32_t>(rindex), sizeof(float), 0, &value);
}

void setProgram(const uint32_t) override
@@ -548,7 +555,7 @@ public:
midiEv.event.time.frames = 0;
midiEv.event.body.type = CARLA_URI_MAP_ID_MIDI_EVENT;
midiEv.event.body.size = 3;
midiEv.data[0] = MIDI_STATUS_NOTE_ON + channel;
midiEv.data[0] = uint8_t(MIDI_STATUS_NOTE_ON | (channel & MIDI_CHANNEL_BIT));
midiEv.data[1] = note;
midiEv.data[2] = velo;

@@ -567,7 +574,7 @@ public:
midiEv.event.time.frames = 0;
midiEv.event.body.type = CARLA_URI_MAP_ID_MIDI_EVENT;
midiEv.event.body.size = 3;
midiEv.data[0] = MIDI_STATUS_NOTE_OFF + channel;
midiEv.data[0] = uint8_t(MIDI_STATUS_NOTE_OFF | (channel & MIDI_CHANNEL_BIT));
midiEv.data[1] = note;
midiEv.data[2] = 0;

@@ -596,7 +603,7 @@ public:

LV2_URID urid = CARLA_URI_MAP_ID_NULL;

for (size_t i=0; i < fCustomURIDs.count(); ++i)
for (uint32_t i=0, count=static_cast<uint32_t>(fCustomURIDs.count()); i<count; ++i)
{
const char* const thisUri(fCustomURIDs.getAt(i, nullptr));

@@ -609,7 +616,7 @@ public:

if (urid == CARLA_URI_MAP_ID_NULL)
{
urid = fCustomURIDs.count();
urid = static_cast<LV2_URID>(fCustomURIDs.count());
fCustomURIDs.append(carla_strdup(uri));
}

@@ -681,7 +688,7 @@ public:
const float value(*(const float*)buffer);

if (isOscControlRegistered())
sendOscControl(portIndex, value);
sendOscControl(static_cast<int32_t>(portIndex), value);
}
else if (format == CARLA_URI_MAP_ID_ATOM_TRANSFER_ATOM || CARLA_URI_MAP_ID_ATOM_TRANSFER_EVENT)
{
@@ -724,7 +731,7 @@ public:
return;
}

const uint32_t uridCount(fCustomURIDs.count());
const uint32_t uridCount(static_cast<uint32_t>(fCustomURIDs.count()));

if (urid < uridCount)
{
@@ -1197,7 +1204,7 @@ int CarlaBridgeOsc::handleMsgLv2AtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS)
CARLA_SAFE_ASSERT_RETURN(chunk.size() > 0, 0);

const LV2_Atom* const atom((const LV2_Atom*)chunk.data());
lv2ClientPtr->handleAtomTransfer(portIndex, atom);
lv2ClientPtr->handleAtomTransfer(static_cast<uint32_t>(portIndex), atom);
return 0;
}

@@ -1215,7 +1222,7 @@ int CarlaBridgeOsc::handleMsgLv2UridMap(CARLA_BRIDGE_OSC_HANDLE_ARGS)
if (urid < 0)
return 0;

lv2ClientPtr->handleUridMap(urid, uri);
lv2ClientPtr->handleUridMap(static_cast<LV2_URID>(urid), uri);
return 0;
}



+ 38
- 67
source/bridges-ui/CarlaBridgeUI-VST.cpp View File

@@ -32,13 +32,15 @@ class CarlaVstClient : public CarlaBridgeClient
{
public:
CarlaVstClient(const char* const uiTitle)
: CarlaBridgeClient(uiTitle)
: CarlaBridgeClient(uiTitle),
unique1(0),
effect(nullptr),
needIdle(false),
unique2(1),
leakDetector_CarlaVstClient()
{
effect = nullptr;
needIdle = false;

// make client valid
srand(uiTitle[0]);
srand((uint)(uintptr_t)uiTitle[0]);
unique1 = unique2 = rand();
}

@@ -106,9 +108,9 @@ public:
effect->dispatcher(effect, effMainsChanged, 0, 0, nullptr, 0.0f);

#if ! VST_FORCE_DEPRECATED
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, bufferSize, nullptr, sampleRate);
effect->dispatcher(effect, effSetBlockSizeAndSampleRate, 0, bufferSize, nullptr, static_cast<float>(sampleRate));
#endif
effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, sampleRate);
effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, static_cast<float>(sampleRate));
effect->dispatcher(effect, effSetBlockSize, 0, bufferSize, nullptr, 0.0f);
effect->dispatcher(effect, effSetProcessPrecision, 0, kVstProcessPrecision32, nullptr, 0.0f);

@@ -201,43 +203,10 @@ public:

void handleAudioMasterAutomate(const uint32_t index, const float value)
{
effect->setParameter(effect, index, value);
effect->setParameter(effect, static_cast<int32_t>(index), value);

if (isOscControlRegistered())
sendOscControl(index, value);
}

intptr_t handleAudioMasterGetCurrentProcessLevel()
{
return kVstProcessLevelUser;
}

intptr_t handleAudioMasterGetBlockSize()
{
return bufferSize;
}

intptr_t handleAudioMasterGetSampleRate()
{
return sampleRate;
}

intptr_t handleAudioMasterGetTime()
{
memset(&vstTimeInfo, 0, sizeof(VstTimeInfo));

vstTimeInfo.sampleRate = sampleRate;

// Tempo
vstTimeInfo.tempo = 120.0;
vstTimeInfo.flags |= kVstTempoValid;

// Time Signature
vstTimeInfo.timeSigNumerator = 4;
vstTimeInfo.timeSigDenominator = 4;
vstTimeInfo.flags |= kVstTimeSigValid;

return (intptr_t)&vstTimeInfo;
sendOscControl(static_cast<int32_t>(index), value);
}

void handleAudioMasterNeedIdle()
@@ -259,13 +228,13 @@ public:

if (vstMidiEvent->type != kVstMidiType)
{
uint8_t status = vstMidiEvent->midiData[0];
uint8_t status = uint8_t(vstMidiEvent->midiData[0]);

// Fix bad note-off
if (MIDI_IS_STATUS_NOTE_ON(status) && vstMidiEvent->midiData[2] == 0)
status -= 0x10;
status = uint8_t(status - 0x10);

uint8_t midiBuf[4] = { 0, status, (uint8_t)vstMidiEvent->midiData[1], (uint8_t)vstMidiEvent->midiData[2] };
uint8_t midiBuf[4] = { 0, status, uint8_t(vstMidiEvent->midiData[1]), uint8_t(vstMidiEvent->midiData[2]) };
sendOscMidi(midiBuf);
}
}
@@ -356,7 +325,7 @@ public:
self = nullptr;
}

if (self)
if (self != nullptr)
{
if (! self->effect)
self->effect = effect;
@@ -385,8 +354,8 @@ public:
switch (opcode)
{
case audioMasterAutomate:
if (self)
self->handleAudioMasterAutomate(index, opt);
if (self != nullptr && index >= 0)
self->handleAudioMasterAutomate(static_cast<uint32_t>(index), opt);
break;

case audioMasterVersion:
@@ -403,24 +372,25 @@ public:
break;

case audioMasterGetTime:
static VstTimeInfo timeInfo;
memset(&timeInfo, 0, sizeof(VstTimeInfo));
timeInfo.sampleRate = sampleRate;
static VstTimeInfo vstTimeInfo;
carla_zeroStruct(vstTimeInfo);

vstTimeInfo.sampleRate = sampleRate;

// Tempo
timeInfo.tempo = 120.0;
timeInfo.flags |= kVstTempoValid;
vstTimeInfo.tempo = 120.0;
vstTimeInfo.flags |= kVstTempoValid;

// Time Signature
timeInfo.timeSigNumerator = 4;
timeInfo.timeSigDenominator = 4;
timeInfo.flags |= kVstTimeSigValid;
vstTimeInfo.timeSigNumerator = 4;
vstTimeInfo.timeSigDenominator = 4;
vstTimeInfo.flags |= kVstTimeSigValid;

ret = (intptr_t)&timeInfo;
ret = (intptr_t)&vstTimeInfo;
break;

case audioMasterProcessEvents:
if (self && ptr)
if (self != nullptr && ptr != nullptr)
ret = self->handleAudioMasterProcessEvents((const VstEvents*)ptr);
break;

@@ -432,16 +402,16 @@ public:
#endif

case audioMasterSizeWindow:
if (self && index > 0 && value > 0)
ret = self->handleAdioMasterSizeWindow(index, value);
if (self != nullptr && index > 0 && value > 0)
ret = self->handleAdioMasterSizeWindow(index, static_cast<int32_t>(value));
break;

case audioMasterGetSampleRate:
ret = sampleRate;
ret = static_cast<intptr_t>(sampleRate);
break;

case audioMasterGetBlockSize:
ret = bufferSize;
ret = static_cast<intptr_t>(bufferSize);
break;

case audioMasterGetCurrentProcessLevel:
@@ -453,12 +423,12 @@ public:
break;

case audioMasterGetVendorString:
if (ptr)
if (ptr != nullptr)
std::strcpy((char*)ptr, "falkTX");
break;

case audioMasterGetProductString:
if (ptr)
if (ptr != nullptr)
std::strcpy((char*)ptr, "Carla-Bridge");
break;

@@ -467,7 +437,7 @@ public:
break;

case audioMasterCanDo:
if (ptr)
if (ptr != nullptr)
ret = hostCanDo((const char*)ptr);
break;

@@ -476,7 +446,7 @@ public:
break;

case audioMasterUpdateDisplay:
if (self)
if (self != nullptr)
self->handleAudioMasterUpdateDisplay();
break;

@@ -494,12 +464,13 @@ private:
int unique1;

AEffect* effect;
VstTimeInfo vstTimeInfo;

bool needIdle;
static CarlaVstClient* lastVstPlugin;

int unique2;

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaVstClient)
};

CarlaVstClient* CarlaVstClient::lastVstPlugin = nullptr;


Loading…
Cancel
Save