From 91c4b414b0663fa50c9bbaa0d47a9a2c113be075 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Tue, 22 Dec 2020 13:37:58 +0100 Subject: [PATCH] Add a Vst3PlugFrameProxy implementation with stubs --- meson.build | 1 + src/common/serialization/vst3.h | 2 + .../bridges/vst3-impls/plug-frame-proxy.cpp | 48 +++++++++++++++++++ .../bridges/vst3-impls/plug-frame-proxy.h | 39 +++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp create mode 100644 src/wine-host/bridges/vst3-impls/plug-frame-proxy.h diff --git a/meson.build b/meson.build index 680cc297..999932bb 100644 --- a/meson.build +++ b/meson.build @@ -153,6 +153,7 @@ if with_vst3 'src/common/serialization/vst3/process-data.cpp', 'src/wine-host/bridges/vst3-impls/component-handler-proxy.cpp', 'src/wine-host/bridges/vst3-impls/host-context-proxy.cpp', + 'src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp', 'src/wine-host/bridges/vst3.cpp', ] endif diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index 79e54485..8dd51ffc 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -25,6 +25,8 @@ #include "common.h" #include "vst3/component-handler-proxy.h" #include "vst3/host-context-proxy.h" +#include "vst3/plug-frame-proxy.h" +#include "vst3/plug-view-proxy.h" #include "vst3/plugin-factory.h" #include "vst3/plugin-proxy.h" diff --git a/src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp b/src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp new file mode 100644 index 00000000..2d005ffa --- /dev/null +++ b/src/wine-host/bridges/vst3-impls/plug-frame-proxy.cpp @@ -0,0 +1,48 @@ +// yabridge: a Wine VST bridge +// Copyright (C) 2020 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 "plug-frame-proxy.h" + +#include + +Vst3PlugFrameProxyImpl::Vst3PlugFrameProxyImpl( + Vst3Bridge& bridge, + Vst3PlugFrameProxy::ConstructArgs&& args) + : Vst3PlugFrameProxy(std::move(args)), bridge(bridge) { + // The lifecycle is thos object is managed together with that of the plugin + // object instance instance this belongs to +} + +tresult PLUGIN_API +Vst3PlugFrameProxyImpl::queryInterface(const Steinberg::TUID _iid, void** obj) { + // TODO: Successful queries should also be logged + const tresult result = Vst3PlugFrameProxy::queryInterface(_iid, obj); + if (result != Steinberg::kResultOk) { + std::cerr << "TODO: Implement unknown interface logging on Wine side " + "for Vst3PlugFrameProxyImpl::queryInterface" + << std::endl; + } + + return result; +} + +tresult PLUGIN_API +Vst3PlugFrameProxyImpl::resizeView(Steinberg::IPlugView* view, + Steinberg::ViewRect* newSize) { + // TODO: Implement + std::cerr << "TODO: IPlugFrame::resizeView()" << std::endl; + return Steinberg::kNotImplemented; +} diff --git a/src/wine-host/bridges/vst3-impls/plug-frame-proxy.h b/src/wine-host/bridges/vst3-impls/plug-frame-proxy.h new file mode 100644 index 00000000..e15066a6 --- /dev/null +++ b/src/wine-host/bridges/vst3-impls/plug-frame-proxy.h @@ -0,0 +1,39 @@ +// yabridge: a Wine VST bridge +// Copyright (C) 2020 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 Vst3PlugFrameProxyImpl : public Vst3PlugFrameProxy { + public: + Vst3PlugFrameProxyImpl(Vst3Bridge& bridge, + Vst3PlugFrameProxy::ConstructArgs&& args); + + /** + * 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 `IPlugFrame` + tresult PLUGIN_API resizeView(Steinberg::IPlugView* view, + Steinberg::ViewRect* newSize) override; + + private: + Vst3Bridge& bridge; +};