DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit aad10058029ec4afe209b099a1ac8e2e8c8a2f25
parent c3a3ee004eb5427067488f425540ba54336e4d38
Author: falkTX <falktx@gmail.com>
Date:   Tue, 20 Jun 2017 11:37:35 +0200

Implement initial MOD LV2 license API

Diffstat:
Mdistrho/src/DistrhoPluginLV2.cpp | 28++++++++++++++++++++++++++++
Mdistrho/src/DistrhoPluginLV2export.cpp | 10++++++++++
2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/distrho/src/DistrhoPluginLV2.cpp b/distrho/src/DistrhoPluginLV2.cpp @@ -30,6 +30,10 @@ #include "lv2/lv2_kxstudio_properties.h" #include "lv2/lv2_programs.h" +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD +# include "libmodauth.h" +#endif + #ifdef noexcept # undef noexcept #endif @@ -58,6 +62,9 @@ class PluginLv2 public: PluginLv2(const double sampleRate, const LV2_URID_Map* const uridMap, const LV2_Worker_Schedule* const worker, const bool usingNominal) : fUsingNominal(usingNominal), +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + fRunCount(0), +#endif fPortControls(nullptr), fLastControlValues(nullptr), fSampleRate(sampleRate), @@ -525,12 +532,21 @@ public: // Run plugin if (sampleCount != 0) { +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + fRunCount = mod_license_run_begin(fRunCount, sampleCount); +#endif + #if DISTRHO_PLUGIN_WANT_MIDI_INPUT fPlugin.run(fPortAudioIns, fPortAudioOuts, sampleCount, fMidiEvents, midiEventCount); #else fPlugin.run(fPortAudioIns, fPortAudioOuts, sampleCount); #endif +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + for (uint32_t i=0; i<DISTRHO_PLUGIN_NUM_OUTPUTS; ++i) + mod_license_run_noise(fRunCount, fPortAudioOuts[i], sampleCount, i); +#endif + #if DISTRHO_PLUGIN_WANT_TIMEPOS // update timePos for next callback if (d_isNotZero(fLastPositionData.speed)) @@ -847,6 +863,10 @@ private: PluginExporter fPlugin; const bool fUsingNominal; // if false use maxBlockLength +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + uint32_t fRunCount; +#endif + // LV2 ports #if DISTRHO_PLUGIN_NUM_INPUTS > 0 const float* fPortAudioIns[DISTRHO_PLUGIN_NUM_INPUTS]; @@ -1035,6 +1055,10 @@ static LV2_Handle lv2_instantiate(const LV2_Descriptor*, double sampleRate, cons } #endif +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + mod_check_license(features, DISTRHO_PLUGIN_URI); +#endif + d_lastBufferSize = 0; bool usingNominal = false; @@ -1194,7 +1218,11 @@ static const void* lv2_extension_data(const char* uri) return &directaccess; #endif +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + return mod_license_interface(uri); +#else return nullptr; +#endif } #undef instancePtr diff --git a/distrho/src/DistrhoPluginLV2export.cpp b/distrho/src/DistrhoPluginLV2export.cpp @@ -34,6 +34,10 @@ #include "lv2/lv2_kxstudio_properties.h" #include "lv2/lv2_programs.h" +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD +# include "mod-license.h" +#endif + #include <fstream> #include <iostream> @@ -225,6 +229,9 @@ void lv2_generate_ttl(const char* const basename) #if DISTRHO_PLUGIN_WANT_PROGRAMS pluginString += ",\n <" LV2_PROGRAMS__Interface "> "; #endif +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + pluginString += ",\n <" MOD_LICENSE__interface "> "; +#endif pluginString += ";\n\n"; // optionalFeatures @@ -242,6 +249,9 @@ void lv2_generate_ttl(const char* const basename) #if DISTRHO_PLUGIN_WANT_STATE pluginString += ",\n <" LV2_WORKER__schedule "> "; #endif +#ifdef DISTRHO_PLUGIN_LICENSED_FOR_MOD + pluginString += ",\n <" MOD_LICENSE__feature "> "; +#endif pluginString += ";\n\n"; // UI