Browse Source

VST3: Correctly set plugin version information

Signed-off-by: falkTX <falktx@falktx.com>
pull/338/head
falkTX 4 years ago
parent
commit
c12d9def50
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
1 changed files with 28 additions and 10 deletions
  1. +28
    -10
      distrho/src/DistrhoPluginVST3.cpp

+ 28
- 10
distrho/src/DistrhoPluginVST3.cpp View File

@@ -61,10 +61,10 @@ namespace std {
* - hide parameter outputs?
* - hide program parameter?
* - deal with parameter triggers
* - MIDI CC changes (need to store value to give to the host?)
* - MIDI program changes
* - MIDI sysex
* - append MIDI input events in a sorted way
* - decode version number (0x010203 -> 1.2.3)
* - bus arrangements
* - optional audio buses, create dummy buffer of max_block_size length for them
* - routing info, do we care?
@@ -294,12 +294,6 @@ void snprintf_f32_utf16(int16_t* const dst, const float value, const size_t size
return snprintf_utf16_t<float>(dst, value, "%f", size);
}

static inline
void snprintf_u32_utf16(int16_t* const dst, const uint32_t value, const size_t size)
{
return snprintf_utf16_t<uint32_t>(dst, value, "%u", size);
}

// --------------------------------------------------------------------------------------------------------------------
// handy way to create a utf16 string on the current function scope, used for message strings

@@ -3493,6 +3487,26 @@ static const char* getPluginCategories()
return categories.buffer();
}

static const char* getPluginVersion()
{
static String version;

if (version.isEmpty())
{
const uint32_t versionNum = getPluginInfo().getVersion();

char versionBuf[64];
snprintf(versionBuf, sizeof(versionBuf)-1, "%d.%d.%d",
(versionNum >> 16) & 0xff,
(versionNum >> 8) & 0xff,
(versionNum >> 0) & 0xff);
versionBuf[sizeof(versionBuf)-1] = '\0';
version = versionBuf;
}

return version.buffer();
}

// --------------------------------------------------------------------------------------------------------------------
// dpf_factory

@@ -3641,10 +3655,14 @@ struct dpf_factory : v3_plugin_factory_cpp {
DISTRHO_NAMESPACE::strncpy(info->category, "Audio Module Class", ARRAY_SIZE(info->category));
DISTRHO_NAMESPACE::strncpy(info->name, getPluginInfo().getName(), ARRAY_SIZE(info->name));

#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
info->class_flags = 0;
#else
info->class_flags = V3_DISTRIBUTABLE;
#endif
DISTRHO_NAMESPACE::strncpy(info->sub_categories, getPluginCategories(), ARRAY_SIZE(info->sub_categories));
DISTRHO_NAMESPACE::strncpy(info->vendor, getPluginInfo().getMaker(), ARRAY_SIZE(info->vendor));
DISTRHO_NAMESPACE::snprintf_u32(info->version, getPluginInfo().getVersion(), ARRAY_SIZE(info->version)); // FIXME
DISTRHO_NAMESPACE::strncpy(info->version, getPluginVersion(), ARRAY_SIZE(info->version));
DISTRHO_NAMESPACE::strncpy(info->sdk_version, "Travesty", ARRAY_SIZE(info->sdk_version));
return V3_OK;
}
@@ -3668,8 +3686,8 @@ struct dpf_factory : v3_plugin_factory_cpp {
info->class_flags = V3_DISTRIBUTABLE;
#endif
DISTRHO_NAMESPACE::strncpy(info->sub_categories, getPluginCategories(), ARRAY_SIZE(info->sub_categories));
DISTRHO_NAMESPACE::strncpy_utf16(info->vendor, getPluginInfo().getMaker(), sizeof(info->vendor));
DISTRHO_NAMESPACE::snprintf_u32_utf16(info->version, getPluginInfo().getVersion(), ARRAY_SIZE(info->version)); // FIXME
DISTRHO_NAMESPACE::strncpy_utf16(info->vendor, getPluginInfo().getMaker(), ARRAY_SIZE(info->vendor));
DISTRHO_NAMESPACE::strncpy_utf16(info->version, getPluginVersion(), ARRAY_SIZE(info->version));
DISTRHO_NAMESPACE::strncpy_utf16(info->sdk_version, "Travesty", ARRAY_SIZE(info->sdk_version));
return V3_OK;
}


Loading…
Cancel
Save