summaryrefslogtreecommitdiff
path: root/distrho/src/DistrhoPluginVST.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'distrho/src/DistrhoPluginVST.cpp')
-rw-r--r--distrho/src/DistrhoPluginVST.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp
index 00f46b2f..7c6ad521 100644
--- a/distrho/src/DistrhoPluginVST.cpp
+++ b/distrho/src/DistrhoPluginVST.cpp
@@ -468,15 +468,26 @@ public:
value = value > midRange ? ranges.max : ranges.min;
}
+ else if (hints & kParameterIsInteger)
+ {
+ value = std::round(value);
+ }
- if (hints & kParameterIsInteger)
+ const ParameterEnumerationValues& enumValues(fPlugin.getParameterEnumValues(index));
+
+ for (uint8_t i = 0; i < enumValues.count; ++i)
{
- DISTRHO_NAMESPACE::snprintf_iparam((char*)ptr, (int32_t)std::round(value), 24);
+ if (d_isNotEqual(value, enumValues.values[i].value))
+ continue;
+
+ DISTRHO_NAMESPACE::strncpy((char*)ptr, enumValues.values[i].label.buffer(), 24);
+ return 1;
}
+
+ if (hints & kParameterIsInteger)
+ DISTRHO_NAMESPACE::snprintf_iparam((char*)ptr, (int32_t)value, 24);
else
- {
DISTRHO_NAMESPACE::snprintf_param((char*)ptr, value, 24);
- }
return 1;
}