diff options
Diffstat (limited to 'libs/distrho/src/DistrhoPluginVST.cpp')
-rw-r--r-- | libs/distrho/src/DistrhoPluginVST.cpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/libs/distrho/src/DistrhoPluginVST.cpp b/libs/distrho/src/DistrhoPluginVST.cpp index 5eb1954..0747661 100644 --- a/libs/distrho/src/DistrhoPluginVST.cpp +++ b/libs/distrho/src/DistrhoPluginVST.cpp @@ -119,7 +119,7 @@ public: fEffect(effect), fUiHelper(uiHelper), fPlugin(plugin), - fUI(this, winId, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, uiResizeCallback, plugin->getInstancePointer()) + fUI(this, winId, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, setSizeCallback, plugin->getInstancePointer()) { } @@ -215,7 +215,7 @@ protected: #endif } - void uiResize(const uint width, const uint height) + void setSize(const uint width, const uint height) { fUI.setSize(width, height); hostCallback(audioMasterSizeWindow, width, height, nullptr, 0.0f); @@ -256,9 +256,9 @@ private: handlePtr->sendNote(channel, note, velocity); } - static void uiResizeCallback(void* ptr, uint width, uint height) + static void setSizeCallback(void* ptr, uint width, uint height) { - handlePtr->uiResize(width, height); + handlePtr->setSize(width, height); } #undef handlePtr @@ -638,24 +638,23 @@ public: #endif } - void vst_processReplacing(float** const inputs, float** const outputs, const int32_t sampleFrames) + void vst_processReplacing(const float** const inputs, float** const outputs, const int32_t sampleFrames) { #if DISTRHO_PLUGIN_WANT_TIMEPOS - static const int kWantedVstTimeFlags(kVstTransportPlaying|kVstTempoValid|kVstTimeSigValid); + static const int kWantVstTimeFlags(kVstTransportPlaying|kVstTempoValid|kVstTimeSigValid); - if (const VstTimeInfo* const vstTimeInfo = (const VstTimeInfo*)fAudioMaster(fEffect, audioMasterGetTime, 0, kWantedVstTimeFlags, nullptr, 0.0f)) + if (const VstTimeInfo* const vstTimeInfo = (const VstTimeInfo*)fAudioMaster(fEffect, audioMasterGetTime, 0, kWantVstTimeFlags, nullptr, 0.0f)) { fTimePos.playing = (vstTimeInfo->flags & kVstTransportPlaying); fTimePos.frame = vstTimeInfo->samplePos; + fTimePos.bbt.valid = ((vstTimeInfo->flags & kVstTempoValid) != 0 || (vstTimeInfo->flags & kVstTimeSigValid) != 0); if (vstTimeInfo->flags & kVstTempoValid) { - fTimePos.bbt.valid = true; fTimePos.bbt.beatsPerMinute = vstTimeInfo->tempo; } if (vstTimeInfo->flags & kVstTimeSigValid) { - fTimePos.bbt.valid = true; fTimePos.bbt.beatsPerBar = vstTimeInfo->timeSigNumerator; fTimePos.bbt.beatType = vstTimeInfo->timeSigDenominator; } @@ -736,8 +735,7 @@ private: { # if DISTRHO_PLUGIN_HAS_UI // set previous parameters invalid - for (uint32_t i=0, count = fPlugin.getParameterCount(); i < count; ++i) - parameterChecks[i] = false; + std::memset(parameterChecks, 0, sizeof(bool)*fPlugin.getParameterCount()); # endif nextProgram = index; @@ -939,13 +937,13 @@ static void vst_setParameterCallback(AEffect* effect, int32_t index, float value static void vst_processCallback(AEffect* effect, float** inputs, float** outputs, int32_t sampleFrames) { if (validEffect) - handlePtr->vst_processReplacing(inputs, outputs, sampleFrames); + handlePtr->vst_processReplacing(const_cast<const float**>(inputs), outputs, sampleFrames); } static void vst_processReplacingCallback(AEffect* effect, float** inputs, float** outputs, int32_t sampleFrames) { if (validEffect) - handlePtr->vst_processReplacing(inputs, outputs, sampleFrames); + handlePtr->vst_processReplacing(const_cast<const float**>(inputs), outputs, sampleFrames); } #undef handlePtr @@ -955,6 +953,13 @@ static void vst_processReplacingCallback(AEffect* effect, float** inputs, float* END_NAMESPACE_DISTRHO DISTRHO_PLUGIN_EXPORT +#if DISTRHO_OS_WINDOWS +const AEffect* VSTPluginMain(audioMasterCallback audioMaster); +#else +const AEffect* VSTPluginMain(audioMasterCallback audioMaster) asm ("main"); +#endif + +DISTRHO_PLUGIN_EXPORT const AEffect* VSTPluginMain(audioMasterCallback audioMaster) { USE_NAMESPACE_DISTRHO @@ -977,7 +982,7 @@ const AEffect* VSTPluginMain(audioMasterCallback audioMaster) int32_t* const version = (int32_t*)&effect->unknown1; *version = plugin->getVersion(); #else - effect->version = plugin->getVersion(); + effect->version = plugin->getVersion(); #endif // plugin fields @@ -1016,3 +1021,5 @@ const AEffect* VSTPluginMain(audioMasterCallback audioMaster) return effect; } + +// ----------------------------------------------------------------------- |