summaryrefslogtreecommitdiff
path: root/libs/distrho/src/DistrhoPluginVST.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/distrho/src/DistrhoPluginVST.cpp')
-rw-r--r--libs/distrho/src/DistrhoPluginVST.cpp35
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;
}
+
+// -----------------------------------------------------------------------