diff --git a/meson.build b/meson.build index 11e67368..f4fe3331 100644 --- a/meson.build +++ b/meson.build @@ -137,6 +137,7 @@ vst3_plugin_sources = [ 'src/common/plugins.cpp', 'src/common/utils.cpp', 'src/plugin/bridges/vst3.cpp', + 'src/plugin/bridges/vst3-impls/context-menu-target.cpp', 'src/plugin/bridges/vst3-impls/plugin-factory.cpp', 'src/plugin/bridges/vst3-impls/plug-view-proxy.cpp', 'src/plugin/bridges/vst3-impls/plugin-proxy.cpp', diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index daf75285..443d7493 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -26,6 +26,7 @@ #include "vst3/component-handler-proxy.h" #include "vst3/connection-point-proxy.h" #include "vst3/context-menu-proxy.h" +#include "vst3/context-menu-target.h" #include "vst3/host-context-proxy.h" #include "vst3/plug-frame-proxy.h" #include "vst3/plug-view-proxy.h" diff --git a/src/plugin/bridges/vst3-impls/context-menu-target.cpp b/src/plugin/bridges/vst3-impls/context-menu-target.cpp new file mode 100644 index 00000000..21076e8e --- /dev/null +++ b/src/plugin/bridges/vst3-impls/context-menu-target.cpp @@ -0,0 +1,41 @@ +// yabridge: a Wine VST bridge +// Copyright (C) 2020-2021 Robbert van der Helm +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include "context-menu-target.h" + +YaContextMenuTargetImpl::YaContextMenuTargetImpl( + Vst3PluginBridge& bridge, + native_size_t owner_instance_id, + native_size_t context_menu_id, + int32 tag) + : YaContextMenuTarget(owner_instance_id, context_menu_id, tag), + bridge(bridge) {} + +tresult PLUGIN_API +YaContextMenuTargetImpl::queryInterface(const Steinberg::TUID _iid, + void** obj) { + const tresult result = YaContextMenuTarget::queryInterface(_iid, obj); + bridge.logger.log_query_interface("In IContextMenuTarget::queryInterface()", + result, Steinberg::FUID::fromTUID(_iid)); + + return result; +} + +tresult PLUGIN_API YaContextMenuTargetImpl::executeMenuItem(int32 tag) { + // TODO: Implement + bridge.logger.log("TODO: IContextMenuTarget::executeMenuItem()"); + return Steinberg::kNotImplemented; +} diff --git a/src/plugin/bridges/vst3-impls/context-menu-target.h b/src/plugin/bridges/vst3-impls/context-menu-target.h new file mode 100644 index 00000000..34e61642 --- /dev/null +++ b/src/plugin/bridges/vst3-impls/context-menu-target.h @@ -0,0 +1,43 @@ +// yabridge: a Wine VST bridge +// Copyright (C) 2020-2021 Robbert van der Helm +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include "../vst3.h" + +class YaContextMenuTargetImpl : public YaContextMenuTarget { + public: + /** + * @override + */ + YaContextMenuTargetImpl(Vst3PluginBridge& bridge, + native_size_t owner_instance_id, + native_size_t context_menu_id, + int32 tag); + + /** + * We'll override the query interface to log queries for interfaces we do + * not (yet) support. + */ + tresult PLUGIN_API queryInterface(const Steinberg::TUID _iid, + void** obj) override; + + // From `IContextMenuTarget` + tresult PLUGIN_API executeMenuItem(int32 tag) override; + + private: + Vst3PluginBridge& bridge; +};