Fully implement IParameterFinder

With this we're at VST 3.0.2 support.
This commit is contained in:
Robbert van der Helm
2021-01-03 23:46:13 +01:00
parent 52d4fe2f08
commit 8924124abb
7 changed files with 46 additions and 3 deletions
+1
View File
@@ -90,6 +90,7 @@ using ControlRequest =
YaNoteExpressionController::GetNoteExpressionInfo,
YaNoteExpressionController::GetNoteExpressionStringByValue,
YaNoteExpressionController::GetNoteExpressionValueByString,
YaParameterFinder::FindParameter,
YaPlugView::IsPlatformTypeSupported,
YaPlugView::Attached,
YaPlugView::Removed,
@@ -21,10 +21,13 @@ Vst3PlugViewProxy::ConstructArgs::ConstructArgs() {}
Vst3PlugViewProxy::ConstructArgs::ConstructArgs(
Steinberg::IPtr<Steinberg::FUnknown> object,
size_t owner_instance_id)
: owner_instance_id(owner_instance_id), plug_view_args(object) {}
: owner_instance_id(owner_instance_id),
plug_view_args(object),
parameter_finder_args(object) {}
Vst3PlugViewProxy::Vst3PlugViewProxy(const ConstructArgs&& args)
: YaPlugView(std::move(args.plug_view_args)),
YaParameterFinder(std::move(args.parameter_finder_args)),
arguments(std::move(args)){FUNKNOWN_CTOR}
Vst3PlugViewProxy::~Vst3PlugViewProxy() {
@@ -44,6 +47,10 @@ tresult PLUGIN_API Vst3PlugViewProxy::queryInterface(Steinberg::FIDString _iid,
QUERY_INTERFACE(_iid, obj, Steinberg::IPlugView::iid,
Steinberg::IPlugView)
}
if (YaParameterFinder::supported()) {
QUERY_INTERFACE(_iid, obj, Steinberg::Vst::IParameterFinder::iid,
Steinberg::Vst::IParameterFinder)
}
*obj = nullptr;
return Steinberg::kNoInterface;
@@ -30,7 +30,7 @@
* `IEditController::createView()`, and it works exactly the same as
* `Vst3PluginProxy`.
*/
class Vst3PlugViewProxy : public YaPlugView {
class Vst3PlugViewProxy : public YaPlugView, public YaParameterFinder {
public:
/**
* These are the arguments for constructing a
@@ -55,10 +55,13 @@ class Vst3PlugViewProxy : public YaPlugView {
YaPlugView::ConstructArgs plug_view_args;
YaParameterFinder::ConstructArgs parameter_finder_args;
template <typename S>
void serialize(S& s) {
s.value8b(owner_instance_id);
s.object(plug_view_args);
s.object(parameter_finder_args);
}
};
@@ -99,7 +99,7 @@ class YaParameterFinder : public Steinberg::Vst::IParameterFinder {
virtual tresult PLUGIN_API
findParameter(int32 xPos,
int32 yPos,
Steinberg::Vst::ParamID& resultTag /*out*/) = 0;
Steinberg::Vst::ParamID& resultTag /*out*/) override = 0;
protected:
ConstructArgs arguments;