Fully implement IPrefetchableSupport

This commit is contained in:
Robbert van der Helm
2021-01-12 15:37:58 +01:00
parent 892aaab65a
commit 87b270273f
4 changed files with 29 additions and 5 deletions
+2 -1
View File
@@ -163,7 +163,8 @@ using AudioProcessorRequest =
YaComponent::GetBusInfo, YaComponent::GetBusInfo,
YaComponent::GetRoutingInfo, YaComponent::GetRoutingInfo,
YaComponent::ActivateBus, YaComponent::ActivateBus,
YaComponent::SetActive>; YaComponent::SetActive,
YaPrefetchableSupport::GetPrefetchableSupport>;
template <typename S> template <typename S>
void serialize(S& s, AudioProcessorRequest& payload) { void serialize(S& s, AudioProcessorRequest& payload) {
@@ -675,10 +675,14 @@ tresult PLUGIN_API Vst3PluginProxyImpl::terminate() {
tresult PLUGIN_API Vst3PluginProxyImpl::getPrefetchableSupport( tresult PLUGIN_API Vst3PluginProxyImpl::getPrefetchableSupport(
Steinberg::Vst::PrefetchableSupport& prefetchable /*out*/) { Steinberg::Vst::PrefetchableSupport& prefetchable /*out*/) {
// TODO: Implement const GetPrefetchableSupportResponse response =
bridge.logger.log( bridge.send_audio_processor_message(
"TODO: Implement IPrefetchableSupport::getPrefetchableSupport()"); YaPrefetchableSupport::GetPrefetchableSupport{.instance_id =
return Steinberg::kNotImplemented; instance_id()});
prefetchable = response.prefetchable;
return response.result;
} }
tresult PLUGIN_API Vst3PluginProxyImpl::programDataSupported( tresult PLUGIN_API Vst3PluginProxyImpl::programDataSupported(
+17
View File
@@ -50,6 +50,7 @@ InstanceInterfaces::InstanceInterfaces(
note_expression_controller(object), note_expression_controller(object),
plugin_base(object), plugin_base(object),
unit_data(object), unit_data(object),
prefetchable_support(object),
program_list_data(object), program_list_data(object),
unit_info(object), unit_info(object),
xml_representation_controller(object) {} xml_representation_controller(object) {}
@@ -1103,6 +1104,22 @@ size_t Vst3Bridge::register_object_instance(
return object_instances[request.instance_id] return object_instances[request.instance_id]
.component->setActive(request.state); .component->setActive(request.state);
}, },
[&](const YaPrefetchableSupport::GetPrefetchableSupport&
request)
-> YaPrefetchableSupport::GetPrefetchableSupport::
Response {
Steinberg::Vst::PrefetchableSupport
prefetchable;
const tresult result =
object_instances[request.instance_id]
.prefetchable_support
->getPrefetchableSupport(prefetchable);
return YaPrefetchableSupport::
GetPrefetchableSupportResponse{
.result = result,
.prefetchable = prefetchable};
},
}); });
}); });
+2
View File
@@ -162,6 +162,8 @@ struct InstanceInterfaces {
note_expression_controller; note_expression_controller;
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base; Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data; Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IPrefetchableSupport>
prefetchable_support;
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data; Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info; Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
Steinberg::FUnknownPtr<Steinberg::Vst::IXmlRepresentationController> Steinberg::FUnknownPtr<Steinberg::Vst::IXmlRepresentationController>