From 87eecb8553efedd7c7d366d30be67e31df8f9c6e Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 16 Sep 2014 23:24:37 +0100 Subject: [PATCH] Fix UI bridges for -Weffc++ --- source/bridges-ui/CarlaBridgeClient.cpp | 3 +- source/bridges-ui/CarlaBridgeClient.hpp | 4 +- source/bridges-ui/CarlaBridgeOsc.cpp | 10 +- source/bridges-ui/CarlaBridgeToolkit.hpp | 5 +- source/bridges-ui/CarlaBridgeToolkitGtk.cpp | 5 +- .../bridges-ui/CarlaBridgeToolkitPlugin.cpp | 9 +- source/bridges-ui/CarlaBridgeToolkitQt.cpp | 17 ++- source/bridges-ui/CarlaBridgeUI-LV2.cpp | 41 ++++--- source/bridges-ui/CarlaBridgeUI-VST.cpp | 105 +++++++----------- 9 files changed, 100 insertions(+), 99 deletions(-) diff --git a/source/bridges-ui/CarlaBridgeClient.cpp b/source/bridges-ui/CarlaBridgeClient.cpp index 8f550e965..8ba3317ad 100644 --- a/source/bridges-ui/CarlaBridgeClient.cpp +++ b/source/bridges-ui/CarlaBridgeClient.cpp @@ -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); diff --git a/source/bridges-ui/CarlaBridgeClient.hpp b/source/bridges-ui/CarlaBridgeClient.hpp index 685bc43bb..282683222 100644 --- a/source/bridges-ui/CarlaBridgeClient.hpp +++ b/source/bridges-ui/CarlaBridgeClient.hpp @@ -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; diff --git a/source/bridges-ui/CarlaBridgeOsc.cpp b/source/bridges-ui/CarlaBridgeOsc.cpp index 2f7300139..b34ce23f2 100644 --- a/source/bridges-ui/CarlaBridgeOsc.cpp +++ b/source/bridges-ui/CarlaBridgeOsc.cpp @@ -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)) { diff --git a/source/bridges-ui/CarlaBridgeToolkit.hpp b/source/bridges-ui/CarlaBridgeToolkit.hpp index 26ee160eb..61a46c50c 100644 --- a/source/bridges-ui/CarlaBridgeToolkit.hpp +++ b/source/bridges-ui/CarlaBridgeToolkit.hpp @@ -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) }; // ----------------------------------------------------------------------- diff --git a/source/bridges-ui/CarlaBridgeToolkitGtk.cpp b/source/bridges-ui/CarlaBridgeToolkitGtk.cpp index 68cf41a22..233f36e58 100644 --- a/source/bridges-ui/CarlaBridgeToolkitGtk.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitGtk.cpp @@ -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) }; // ------------------------------------------------------------------------- diff --git a/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp b/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp index 053e411fb..65621a2e9 100644 --- a/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitPlugin.cpp @@ -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(width), static_cast(height), false); } void* getContainerId() const override @@ -150,6 +153,8 @@ protected: private: CarlaPluginUI* fUI; bool fIdling; + + CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaBridgeToolkitPlugin) }; // ------------------------------------------------------------------------- diff --git a/source/bridges-ui/CarlaBridgeToolkitQt.cpp b/source/bridges-ui/CarlaBridgeToolkitQt.cpp index def3fa365..ea53057d3 100644 --- a/source/bridges-ui/CarlaBridgeToolkitQt.cpp +++ b/source/bridges-ui/CarlaBridgeToolkitQt.cpp @@ -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 diff --git a/source/bridges-ui/CarlaBridgeUI-LV2.cpp b/source/bridges-ui/CarlaBridgeUI-LV2.cpp index 699368bcd..7c7df9fc5 100644 --- a/source/bridges-ui/CarlaBridgeUI-LV2.cpp +++ b/source/bridges-ui/CarlaBridgeUI-LV2.cpp @@ -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(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(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(fCustomURIDs.count()); i(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(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(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(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(urid), uri); return 0; } diff --git a/source/bridges-ui/CarlaBridgeUI-VST.cpp b/source/bridges-ui/CarlaBridgeUI-VST.cpp index ff7942d39..53d8a9563 100644 --- a/source/bridges-ui/CarlaBridgeUI-VST.cpp +++ b/source/bridges-ui/CarlaBridgeUI-VST.cpp @@ -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(sampleRate)); #endif - effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, sampleRate); + effect->dispatcher(effect, effSetSampleRate, 0, 0, nullptr, static_cast(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(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(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(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(value)); break; case audioMasterGetSampleRate: - ret = sampleRate; + ret = static_cast(sampleRate); break; case audioMasterGetBlockSize: - ret = bufferSize; + ret = static_cast(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;