Fully implement IPlugViewContentScaleSupport

With this we're at VST 3.6.6 level support.
This commit is contained in:
Robbert van der Helm
2021-01-14 14:52:39 +01:00
parent 0d674d6185
commit 0bed2b7bc0
4 changed files with 22 additions and 6 deletions
+1
View File
@@ -113,6 +113,7 @@ using ControlRequest =
YaPlugView::SetFrame,
YaPlugView::CanResize,
YaPlugView::CheckSizeConstraint,
YaPlugViewContentScaleSupport::SetContentScaleFactor,
YaPluginBase::Initialize,
YaPluginBase::Terminate,
YaPluginFactory::Construct,
@@ -189,9 +189,7 @@ tresult PLUGIN_API Vst3PlugViewProxyImpl::findParameter(
tresult PLUGIN_API
Vst3PlugViewProxyImpl::setContentScaleFactor(ScaleFactor factor) {
// TODO: Implement
bridge.logger.log(
"TODO: Implement "
"iplugviewcontentscalesupport::setContentScaleFactor()");
return Steinberg::kNotImplemented;
return bridge.send_message(
YaPlugViewContentScaleSupport::SetContentScaleFactor{
.owner_instance_id = owner_instance_id(), .factor = factor});
}
+16 -1
View File
@@ -30,7 +30,9 @@ InstancePlugView::InstancePlugView() {}
InstancePlugView::InstancePlugView(
Steinberg::IPtr<Steinberg::IPlugView> plug_view)
: plug_view(plug_view), parameter_finder(plug_view) {}
: plug_view(plug_view),
parameter_finder(plug_view),
plug_view_content_scale_support(plug_view) {}
InstanceInterfaces::InstanceInterfaces() {}
@@ -737,6 +739,19 @@ void Vst3Bridge::run() {
return YaPlugView::CheckSizeConstraintResponse{
.result = result, .updated_rect = std::move(request.rect)};
},
[&](YaPlugViewContentScaleSupport::SetContentScaleFactor& request)
-> YaPlugViewContentScaleSupport::SetContentScaleFactor::
Response {
return main_context
.run_in_context<tresult>([&]() {
return object_instances[request
.owner_instance_id]
.plug_view_instance
->plug_view_content_scale_support
->setContentScaleFactor(request.factor);
})
.get();
},
[&](YaPluginBase::Initialize& request)
-> YaPluginBase::Initialize::Response {
// We'll create a proxy object for the host context passed by
+2
View File
@@ -46,6 +46,8 @@ struct InstancePlugView {
// pointers if `plug_view` did not implement the interface.
Steinberg::FUnknownPtr<Steinberg::Vst::IParameterFinder> parameter_finder;
Steinberg::FUnknownPtr<Steinberg::IPlugViewContentScaleSupport>
plug_view_content_scale_support;
};
/**