commit e3a4013f455c3ee46e03141f28cb35cee05fc422
parent 339d2fb4a0ddc5305aeaecabe88d92bf62976e5c
Author: falkTX <falktx@gmail.com>
Date: Thu, 10 Apr 2014 20:54:12 +0100
Same stuff for DSP side; Update carla export code
Diffstat:
3 files changed, 56 insertions(+), 55 deletions(-)
diff --git a/distrho/src/DistrhoDefines.h b/distrho/src/DistrhoDefines.h
@@ -55,6 +55,15 @@
# error DISTRHO_PLUGIN_WANT_TIMEPOS undefined!
#endif
+/* Compatibility with non-clang compilers */
+#ifndef __has_feature
+# define __has_feature(x) 0
+#endif
+#ifndef __has_extension
+# define __has_extension __has_feature
+#endif
+
+/* Check OS */
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define DISTRHO_PLUGIN_EXPORT extern "C" __declspec (dllexport)
# define DISTRHO_OS_WINDOWS 1
@@ -77,25 +86,25 @@
# define DISTRHO_DLL_EXTENSION "so"
#endif
+/* Check for C++11 support */
#if defined(HAVE_CPP11_SUPPORT)
# define PROPER_CPP11_SUPPORT
-#elif defined(__GNUC__) && (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__))
-# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
-# define PROPER_CPP11_SUPPORT
-# if (__GNUC__ * 100 + __GNUC_MINOR__) < 407
-# define override // gcc4.7+ only
-# endif
+#elif __cplusplus >= 201103L || (defined(__GNUC__) && defined(__GXX_EXPERIMENTAL_CXX0X__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405) || __has_extension(cxx_noexcept)
+# define PROPER_CPP11_SUPPORT
+# if (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) < 407) || ! __has_extension(cxx_override_control)
+# define override // gcc4.7+ only
+# define final // gcc4.7+ only
# endif
#endif
#ifndef PROPER_CPP11_SUPPORT
-# ifndef __clang__
-# define noexcept throw()
-# endif
+# define noexcept throw()
# define override
+# define final
# define nullptr (0)
#endif
+/* Define namespace */
#ifndef DISTRHO_NO_NAMESPACE
# ifndef DISTRHO_NAMESPACE
# define DISTRHO_NAMESPACE DISTRHO
diff --git a/distrho/src/DistrhoPluginCarla.cpp b/distrho/src/DistrhoPluginCarla.cpp
@@ -46,6 +46,9 @@ public:
fUI(this, 0, editParameterCallback, setParameterCallback, setStateCallback, sendNoteCallback, uiResizeCallback)
{
fUI.setTitle(host->uiName);
+
+ if (host->uiParentId != 0)
+ fUI.setTransientWinId(host->uiParentId);
}
// ---------------------------------------------
@@ -198,7 +201,7 @@ protected:
const NativeParameter* getParameterInfo(const uint32_t index) const override
{
- CARLA_ASSERT(index < getParameterCount());
+ CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), nullptr);
static NativeParameter param;
@@ -234,9 +237,6 @@ protected:
param.ranges.def = ranges.def;
param.ranges.min = ranges.min;
param.ranges.max = ranges.max;
- //param.ranges.step = ranges.step;
- //param.ranges.stepSmall = ranges.stepSmall;
- //param.ranges.stepLarge = ranges.stepLarge;
}
return ¶m;
@@ -244,7 +244,7 @@ protected:
float getParameterValue(const uint32_t index) const override
{
- CARLA_ASSERT(index < getParameterCount());
+ CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(), 0.0f);
return fPlugin.getParameterValue(index);
}
@@ -260,10 +260,7 @@ protected:
const NativeMidiProgram* getMidiProgramInfo(const uint32_t index) const override
{
- CARLA_ASSERT(index < getMidiProgramCount());
-
- if (index >= fPlugin.getProgramCount())
- return nullptr;
+ CARLA_SAFE_ASSERT_RETURN(index < getMidiProgramCount(), nullptr);
static NativeMidiProgram midiProgram;
@@ -280,7 +277,7 @@ protected:
void setParameterValue(const uint32_t index, const float value) override
{
- CARLA_ASSERT(index < getParameterCount());
+ CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(),);
fPlugin.setParameterValue(index, value);
}
@@ -290,8 +287,7 @@ protected:
{
const uint32_t realProgram(bank * 128 + program);
- if (realProgram >= fPlugin.getProgramCount())
- return;
+ CARLA_SAFE_ASSERT_RETURN(realProgram < getMidiProgramCount(),);
fPlugin.setProgram(realProgram);
}
@@ -300,8 +296,8 @@ protected:
#if DISTRHO_PLUGIN_WANT_STATE
void setCustomData(const char* const key, const char* const value) override
{
- CARLA_ASSERT(key != nullptr);
- CARLA_ASSERT(value != nullptr);
+ CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
+ CARLA_SAFE_ASSERT_RETURN(value != nullptr,);
fPlugin.setState(key, value);
}
@@ -323,21 +319,20 @@ protected:
#if DISTRHO_PLUGIN_IS_SYNTH
void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const midiEvents, const uint32_t midiEventCount) override
{
- uint32_t i;
+ MidiEvent realMidiEvents[midiEventCount];
- for (i=0; i < midiEventCount && i < kMaxMidiEvents; ++i)
+ for (uint32_t i=0; i < midiEventCount; ++i)
{
- const NativeMidiEvent* const midiEvent(&midiEvents[i]);
- MidiEvent* const realMidiEvent(&fRealMidiEvents[i]);
+ const NativeMidiEvent& midiEvent(midiEvents[i]);
+ MidiEvent& realMidiEvent(realMidiEvents[i]);
- realMidiEvent->frame = midiEvent->time;
- realMidiEvent->size = midiEvent->size;
+ realMidiEvent.frame = midiEvent.time;
+ realMidiEvent.size = midiEvent.size;
- for (uint8_t j=0; j < midiEvent->size; ++j)
- realMidiEvent->buf[j] = midiEvent->data[j];
+ carla_copy<uint8_t>(realMidiEvent.buf, midiEvent.data, midiEvent.size);
}
- fPlugin.run(inBuffer, outBuffer, frames, fRealMidiEvents, i);
+ fPlugin.run(inBuffer, outBuffer, frames, realMidiEvents, midiEventCount);
}
#else
void process(float** const inBuffer, float** const outBuffer, const uint32_t frames, const NativeMidiEvent* const, const uint32_t) override
@@ -361,45 +356,40 @@ protected:
void uiIdle() override
{
- CARLA_ASSERT(fUiPtr != nullptr);
+ CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
- if (fUiPtr != nullptr)
- fUiPtr->carla_idle();
+ fUiPtr->carla_idle();
}
void uiSetParameterValue(const uint32_t index, const float value) override
{
- CARLA_ASSERT(fUiPtr != nullptr);
- CARLA_ASSERT(index < getParameterCount());
+ CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
+ CARLA_SAFE_ASSERT_RETURN(index < getParameterCount(),);
- if (fUiPtr != nullptr)
- fUiPtr->carla_setParameterValue(index, value);
+ fUiPtr->carla_setParameterValue(index, value);
}
# if DISTRHO_PLUGIN_WANT_PROGRAMS
void uiSetMidiProgram(const uint8_t, const uint32_t bank, const uint32_t program) override
{
- CARLA_ASSERT(fUiPtr != nullptr);
+ CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
const uint32_t realProgram(bank * 128 + program);
- if (realProgram >= fPlugin.getProgramCount())
- return;
+ CARLA_SAFE_ASSERT_RETURN(realProgram < getMidiProgramCount(),);
- if (fUiPtr != nullptr)
- fUiPtr->carla_setMidiProgram(realProgram);
+ fUiPtr->carla_setMidiProgram(realProgram);
}
# endif
# if DISTRHO_PLUGIN_WANT_STATE
void uiSetCustomData(const char* const key, const char* const value) override
{
- CARLA_ASSERT(fUiPtr != nullptr);
- CARLA_ASSERT(key != nullptr);
- CARLA_ASSERT(value != nullptr);
+ CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
+ CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',);
+ CARLA_SAFE_ASSERT_RETURN(value != nullptr,);
- if (fUiPtr != nullptr)
- fUiPtr->carla_setCustomData(key, value);
+ fUiPtr->carla_setCustomData(key, value);
}
# endif
#endif
@@ -420,8 +410,9 @@ protected:
#if DISTRHO_PLUGIN_HAS_UI
void uiNameChanged(const char* const uiName) override
{
- if (fUiPtr != nullptr)
- fUiPtr->carla_setUiTitle(uiName);
+ CARLA_SAFE_ASSERT_RETURN(fUiPtr != nullptr,);
+
+ fUiPtr->carla_setUiTitle(uiName);
}
#endif
@@ -430,10 +421,6 @@ protected:
private:
PluginExporter fPlugin;
-#if DISTRHO_PLUGIN_IS_SYNTH
- MidiEvent fRealMidiEvents[kMaxMidiEvents];
-#endif
-
#if DISTRHO_PLUGIN_HAS_UI
// UI
UICarla* fUiPtr;
diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp
@@ -223,6 +223,11 @@ public:
glWindow.setTitle(uiTitle);
}
+ void setTransientWinId(const intptr_t winId)
+ {
+ glWindow.setTransientWinId(winId);
+ }
+
void setVisible(const bool yesNo)
{
glWindow.setVisible(yesNo);