From 25af73c86e8d85daa3bbf0cb2fe34d257efd8ca4 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Thu, 7 Jan 2021 20:22:32 +0100 Subject: [PATCH] Update the context menu status --- src/common/serialization/vst3/context-menu-proxy.h | 3 --- src/plugin/bridges/vst3.cpp | 5 +++++ src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/common/serialization/vst3/context-menu-proxy.h b/src/common/serialization/vst3/context-menu-proxy.h index b0d41681..1d7182b8 100644 --- a/src/common/serialization/vst3/context-menu-proxy.h +++ b/src/common/serialization/vst3/context-menu-proxy.h @@ -34,9 +34,6 @@ * the user clicks on them. As far as I'm aware, not a single Linux VST3 host * implements `IComponentHandler3` and thus provides support for these context * menus. - * - * TODO: None of this has been tested because I have not run into any plugins - * that use `IComponentHandler3` yet. */ class Vst3ContextMenuProxy : public YaContextMenu { public: diff --git a/src/plugin/bridges/vst3.cpp b/src/plugin/bridges/vst3.cpp index cb09563f..2e1b1728 100644 --- a/src/plugin/bridges/vst3.cpp +++ b/src/plugin/bridges/vst3.cpp @@ -195,6 +195,11 @@ Vst3PluginBridge::Vst3PluginBridge() }, [&](const YaContextMenu::Popup& request) -> YaContextMenu::Popup::Response { + // FIXME: In REAPER having the menu open without interacting + // with it causes malloc failures or failing font + // drawing calls. Valgrind reports all kinds of + // memory errors within REAPER when this happens, and + // I'm not sure if yabridge is to blame here. return plugin_proxies.at(request.owner_instance_id) .get() .context_menus.at(request.context_menu_id) diff --git a/src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp b/src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp index 7a2ef442..50165d1e 100644 --- a/src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp +++ b/src/wine-host/bridges/vst3-impls/context-menu-proxy.cpp @@ -70,6 +70,8 @@ tresult PLUGIN_API Vst3ContextMenuProxyImpl::getItem( tresult PLUGIN_API Vst3ContextMenuProxyImpl::addItem(const Steinberg::Vst::IContextMenuItem& item, Steinberg::Vst::IContextMenuTarget* target) { + // TODO: I haven't come across a plugin that adds its own items, so this + // hasn't been tested yet const tresult result = bridge.send_message(YaContextMenu::AddItem{ .owner_instance_id = owner_instance_id(), .context_menu_id = context_menu_id(),