From 9ddf4b2ae1797d6eea6dfeeef8fe7ae02a2ea131 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sat, 16 Jan 2021 16:29:21 +0100 Subject: [PATCH] Fully implement IProcessContextRequirements --- src/common/serialization/vst3.h | 1 + src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 8 +++----- src/wine-host/bridges/vst3.cpp | 9 +++++++++ src/wine-host/bridges/vst3.h | 2 ++ 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index 8560a22b..5c9b83a6 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -120,6 +120,7 @@ using ControlRequest = YaPluginBase::Terminate, YaPluginFactory::Construct, YaPluginFactory::SetHostContext, + YaProcessContextRequirements::GetProcessContextRequirements, YaProgramListData::ProgramDataSupported, YaProgramListData::GetProgramData, YaProgramListData::SetProgramData, diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index a65660cd..32040c40 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -729,11 +729,9 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getPrefetchableSupport( } uint32 PLUGIN_API Vst3PluginProxyImpl::getProcessContextRequirements() { - // TODO: Implement - bridge.logger.log( - "TODO: Implement " - "IProcessContextRequirements::getProcessContextRequirements()"); - return 0; + return bridge.send_message( + YaProcessContextRequirements::GetProcessContextRequirements{ + .instance_id = instance_id()}); } tresult PLUGIN_API Vst3PluginProxyImpl::programDataSupported( diff --git a/src/wine-host/bridges/vst3.cpp b/src/wine-host/bridges/vst3.cpp index 148e585b..5c88709f 100644 --- a/src/wine-host/bridges/vst3.cpp +++ b/src/wine-host/bridges/vst3.cpp @@ -56,6 +56,7 @@ InstanceInterfaces::InstanceInterfaces( plugin_base(object), unit_data(object), prefetchable_support(object), + process_context_requirements(object), program_list_data(object), unit_info(object), xml_representation_controller(object) {} @@ -827,6 +828,14 @@ void Vst3Bridge::run() { return object_instances[request.instance_id] .program_list_data->programDataSupported(request.list_id); }, + [&](const YaProcessContextRequirements:: + GetProcessContextRequirements& request) + -> YaProcessContextRequirements::GetProcessContextRequirements:: + Response { + return object_instances[request.instance_id] + .process_context_requirements + ->getProcessContextRequirements(); + }, [&](YaProgramListData::GetProgramData& request) -> YaProgramListData::GetProgramData::Response { const tresult result = diff --git a/src/wine-host/bridges/vst3.h b/src/wine-host/bridges/vst3.h index ce2a9947..a15a7a02 100644 --- a/src/wine-host/bridges/vst3.h +++ b/src/wine-host/bridges/vst3.h @@ -171,6 +171,8 @@ struct InstanceInterfaces { Steinberg::FUnknownPtr unit_data; Steinberg::FUnknownPtr prefetchable_support; + Steinberg::FUnknownPtr + process_context_requirements; Steinberg::FUnknownPtr program_list_data; Steinberg::FUnknownPtr unit_info; Steinberg::FUnknownPtr