Don't cache IHostApplication::getName()

As it turns out there are only two or three functions where we can do
this. It also breaks logging, and this function will probably only be
called once anyways. More consistency is always better.
This commit is contained in:
Robbert van der Helm
2020-12-19 18:28:16 +01:00
parent 01d84b0029
commit 63ae5f330c
13 changed files with 124 additions and 41 deletions
@@ -106,6 +106,10 @@ YaPluginFactoryImpl::setHostContext(Steinberg::FUnknown* context) {
// context.
host_context = context;
// Automatically converted smart pointers for when the plugin performs a
// callback later
host_application = host_context;
std::optional<Vst3HostContextProxy::ConstructArgs> host_context_args{};
if (host_context) {
host_context_args =
@@ -28,6 +28,11 @@ class YaPluginFactoryImpl : public YaPluginFactory {
void** obj) override;
tresult PLUGIN_API setHostContext(Steinberg::FUnknown* context) override;
// The following pointers are cast from `host_context` if `setHostContext()`
// has been called
Steinberg::FUnknownPtr<Steinberg::Vst::IHostApplication> host_application;
private:
Vst3PluginBridge& bridge;
@@ -323,6 +323,10 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setComponentHandler(
// this component handler
component_handler = handler;
// Automatically converted smart pointers for when the plugin performs a
// callback later
host_application = host_context;
std::optional<Vst3ComponentHandlerProxy::ConstructArgs>
component_handler_proxy_args = std::nullopt;
if (handler) {
@@ -130,6 +130,11 @@ class Vst3PluginProxyImpl : public Vst3PluginProxy {
*/
Steinberg::IPtr<Steinberg::Vst::IComponentHandler> component_handler;
// The following pointers are cast from `host_context` if `setHostContext()`
// has been called
Steinberg::FUnknownPtr<Steinberg::Vst::IHostApplication> host_application;
private:
Vst3PluginBridge& bridge;