From 8c10edf861823dfd0ad446488929ee92f9203ef1 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Wed, 18 May 2022 18:44:15 +0200 Subject: [PATCH] Add explicit virtual default destructors We need to silence the warning about this because Steinberg doesn't declare their base class destructors as virtual (because of Windows ABI compatibility issues). But we can still do it inside of yabridge to have at least a bit more safety. --- src/common/communication/vst2.cpp | 2 -- src/common/communication/vst2.h | 2 +- src/common/serialization/vst3/attribute-list.h | 2 +- .../vst3/component-handler/component-handler-2.h | 2 ++ .../vst3/component-handler/component-handler-3.h | 2 ++ .../component-handler/component-handler-bus-activation.h | 2 ++ .../vst3/component-handler/component-handler.h | 2 ++ .../serialization/vst3/component-handler/progress.h | 2 ++ .../vst3/component-handler/unit-handler-2.h | 2 ++ .../serialization/vst3/component-handler/unit-handler.h | 2 ++ src/common/serialization/vst3/context-menu-target.h | 2 +- .../serialization/vst3/context-menu/context-menu.h | 2 ++ src/common/serialization/vst3/event-list.h | 2 +- .../serialization/vst3/host-context/host-application.h | 2 ++ .../vst3/host-context/plug-interface-support.h | 2 ++ src/common/serialization/vst3/message.h | 4 ++-- src/common/serialization/vst3/param-value-queue.cpp | 9 +++++---- src/common/serialization/vst3/param-value-queue.h | 4 ++-- src/common/serialization/vst3/parameter-changes.h | 2 +- src/common/serialization/vst3/plug-frame/plug-frame.h | 2 ++ .../serialization/vst3/plug-view/parameter-finder.h | 2 ++ .../vst3/plug-view/plug-view-content-scale-support.h | 2 ++ src/common/serialization/vst3/plug-view/plug-view.h | 2 ++ .../serialization/vst3/plugin-factory/plugin-factory.h | 2 ++ .../vst3/plugin/audio-presentation-latency.h | 2 ++ src/common/serialization/vst3/plugin/audio-processor.h | 2 ++ src/common/serialization/vst3/plugin/automation-state.h | 2 ++ src/common/serialization/vst3/plugin/component.h | 2 ++ src/common/serialization/vst3/plugin/connection-point.h | 2 ++ src/common/serialization/vst3/plugin/edit-controller-2.h | 2 ++ .../vst3/plugin/edit-controller-host-editing.h | 2 ++ src/common/serialization/vst3/plugin/edit-controller.h | 2 ++ src/common/serialization/vst3/plugin/info-listener.h | 2 ++ .../serialization/vst3/plugin/keyswitch-controller.h | 2 ++ src/common/serialization/vst3/plugin/midi-learn.h | 2 ++ src/common/serialization/vst3/plugin/midi-mapping.h | 2 ++ .../vst3/plugin/note-expression-controller.h | 2 ++ .../vst3/plugin/note-expression-physical-ui-mapping.h | 2 ++ .../serialization/vst3/plugin/parameter-function-name.h | 2 ++ src/common/serialization/vst3/plugin/plugin-base.h | 2 ++ .../serialization/vst3/plugin/prefetchable-support.h | 2 ++ .../vst3/plugin/process-context-requirements.h | 2 ++ src/common/serialization/vst3/plugin/program-list-data.h | 2 ++ src/common/serialization/vst3/plugin/unit-data.h | 2 ++ src/common/serialization/vst3/plugin/unit-info.h | 2 ++ .../vst3/plugin/xml-representation-controller.h | 2 ++ src/plugin/bridges/common.h | 2 +- src/plugin/bridges/vst3-impls/plug-view-proxy.h | 2 +- src/plugin/bridges/vst3-impls/plugin-proxy.cpp | 1 + src/plugin/host-process.cpp | 2 -- src/plugin/host-process.h | 2 +- src/wine-host/bridges/common.cpp | 2 -- src/wine-host/bridges/common.h | 2 +- 53 files changed, 93 insertions(+), 23 deletions(-) diff --git a/src/common/communication/vst2.cpp b/src/common/communication/vst2.cpp index 35101299..111b8015 100644 --- a/src/common/communication/vst2.cpp +++ b/src/common/communication/vst2.cpp @@ -16,8 +16,6 @@ #include "vst2.h" -DefaultDataConverter::~DefaultDataConverter() noexcept {} - Vst2Event::Payload DefaultDataConverter::read_data(const int /*opcode*/, const int /*index*/, const intptr_t /*value*/, diff --git a/src/common/communication/vst2.h b/src/common/communication/vst2.h index 67c4fa8c..c0847b54 100644 --- a/src/common/communication/vst2.h +++ b/src/common/communication/vst2.h @@ -31,7 +31,7 @@ */ class DefaultDataConverter { public: - virtual ~DefaultDataConverter() noexcept; + virtual ~DefaultDataConverter() noexcept = default; /** * Read data from the `data` void pointer into a an `Vst2Event::Payload` diff --git a/src/common/serialization/vst3/attribute-list.h b/src/common/serialization/vst3/attribute-list.h index 95b3ffd8..abde562f 100644 --- a/src/common/serialization/vst3/attribute-list.h +++ b/src/common/serialization/vst3/attribute-list.h @@ -38,7 +38,7 @@ class YaAttributeList : public Steinberg::Vst::IAttributeList { */ YaAttributeList() noexcept; - ~YaAttributeList() noexcept; + virtual ~YaAttributeList() noexcept; DECLARE_FUNKNOWN_METHODS diff --git a/src/common/serialization/vst3/component-handler/component-handler-2.h b/src/common/serialization/vst3/component-handler/component-handler-2.h index 2f50a54b..83bcfbfb 100644 --- a/src/common/serialization/vst3/component-handler/component-handler-2.h +++ b/src/common/serialization/vst3/component-handler/component-handler-2.h @@ -59,6 +59,8 @@ class YaComponentHandler2 : public Steinberg::Vst::IComponentHandler2 { */ YaComponentHandler2(ConstructArgs&& args) noexcept; + virtual ~YaComponentHandler2() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/component-handler-3.h b/src/common/serialization/vst3/component-handler/component-handler-3.h index fc23c50e..9d23e9e4 100644 --- a/src/common/serialization/vst3/component-handler/component-handler-3.h +++ b/src/common/serialization/vst3/component-handler/component-handler-3.h @@ -61,6 +61,8 @@ class YaComponentHandler3 : public Steinberg::Vst::IComponentHandler3 { */ YaComponentHandler3(ConstructArgs&& args) noexcept; + virtual ~YaComponentHandler3() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/component-handler-bus-activation.h b/src/common/serialization/vst3/component-handler/component-handler-bus-activation.h index 154e7c16..0c3461d8 100644 --- a/src/common/serialization/vst3/component-handler/component-handler-bus-activation.h +++ b/src/common/serialization/vst3/component-handler/component-handler-bus-activation.h @@ -62,6 +62,8 @@ class YaComponentHandlerBusActivation */ YaComponentHandlerBusActivation(ConstructArgs&& args) noexcept; + virtual ~YaComponentHandlerBusActivation() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/component-handler.h b/src/common/serialization/vst3/component-handler/component-handler.h index 979d5075..4ac2873d 100644 --- a/src/common/serialization/vst3/component-handler/component-handler.h +++ b/src/common/serialization/vst3/component-handler/component-handler.h @@ -59,6 +59,8 @@ class YaComponentHandler : public Steinberg::Vst::IComponentHandler { */ YaComponentHandler(ConstructArgs&& args) noexcept; + virtual ~YaComponentHandler() noexcept = default; + inline bool supported() const noexcept { return arguments.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/progress.h b/src/common/serialization/vst3/component-handler/progress.h index ce41931a..a3c12f71 100644 --- a/src/common/serialization/vst3/component-handler/progress.h +++ b/src/common/serialization/vst3/component-handler/progress.h @@ -60,6 +60,8 @@ class YaProgress : public Steinberg::Vst::IProgress { */ YaProgress(ConstructArgs&& args) noexcept; + virtual ~YaProgress() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/unit-handler-2.h b/src/common/serialization/vst3/component-handler/unit-handler-2.h index ced6a850..c17199f9 100644 --- a/src/common/serialization/vst3/component-handler/unit-handler-2.h +++ b/src/common/serialization/vst3/component-handler/unit-handler-2.h @@ -59,6 +59,8 @@ class YaUnitHandler2 : public Steinberg::Vst::IUnitHandler2 { */ YaUnitHandler2(ConstructArgs&& args) noexcept; + virtual ~YaUnitHandler2() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/component-handler/unit-handler.h b/src/common/serialization/vst3/component-handler/unit-handler.h index 2ab5d954..322ad3da 100644 --- a/src/common/serialization/vst3/component-handler/unit-handler.h +++ b/src/common/serialization/vst3/component-handler/unit-handler.h @@ -59,6 +59,8 @@ class YaUnitHandler : public Steinberg::Vst::IUnitHandler { */ YaUnitHandler(ConstructArgs&& args) noexcept; + virtual ~YaUnitHandler() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/context-menu-target.h b/src/common/serialization/vst3/context-menu-target.h index 62e68a95..9f64fd2f 100644 --- a/src/common/serialization/vst3/context-menu-target.h +++ b/src/common/serialization/vst3/context-menu-target.h @@ -67,7 +67,7 @@ class YaContextMenuTarget : public Steinberg::Vst::IContextMenuTarget { */ YaContextMenuTarget(ConstructArgs&& args) noexcept; - ~YaContextMenuTarget() noexcept; + virtual ~YaContextMenuTarget() noexcept; DECLARE_FUNKNOWN_METHODS diff --git a/src/common/serialization/vst3/context-menu/context-menu.h b/src/common/serialization/vst3/context-menu/context-menu.h index 0f8ce755..28c05757 100644 --- a/src/common/serialization/vst3/context-menu/context-menu.h +++ b/src/common/serialization/vst3/context-menu/context-menu.h @@ -73,6 +73,8 @@ class YaContextMenu : public Steinberg::Vst::IContextMenu { */ YaContextMenu(ConstructArgs&& args) noexcept; + virtual ~YaContextMenu() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } // Since we pass along a list of initial items, we don't need to proxy this diff --git a/src/common/serialization/vst3/event-list.h b/src/common/serialization/vst3/event-list.h index f86613f1..5957290c 100644 --- a/src/common/serialization/vst3/event-list.h +++ b/src/common/serialization/vst3/event-list.h @@ -239,7 +239,7 @@ class YaEventList : public Steinberg::Vst::IEventList { */ void repopulate(Steinberg::Vst::IEventList& event_list); - ~YaEventList() noexcept; + virtual ~YaEventList() noexcept; DECLARE_FUNKNOWN_METHODS diff --git a/src/common/serialization/vst3/host-context/host-application.h b/src/common/serialization/vst3/host-context/host-application.h index 9f2d2d5a..5077639a 100644 --- a/src/common/serialization/vst3/host-context/host-application.h +++ b/src/common/serialization/vst3/host-context/host-application.h @@ -63,6 +63,8 @@ class YaHostApplication : public Steinberg::Vst::IHostApplication { */ YaHostApplication(ConstructArgs&& args) noexcept; + virtual ~YaHostApplication() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/host-context/plug-interface-support.h b/src/common/serialization/vst3/host-context/plug-interface-support.h index 6f145580..e2edcd24 100644 --- a/src/common/serialization/vst3/host-context/plug-interface-support.h +++ b/src/common/serialization/vst3/host-context/plug-interface-support.h @@ -60,6 +60,8 @@ class YaPlugInterfaceSupport : public Steinberg::Vst::IPlugInterfaceSupport { */ YaPlugInterfaceSupport(ConstructArgs&& args) noexcept; + virtual ~YaPlugInterfaceSupport() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/message.h b/src/common/serialization/vst3/message.h index deff66f2..7f416607 100644 --- a/src/common/serialization/vst3/message.h +++ b/src/common/serialization/vst3/message.h @@ -54,7 +54,7 @@ class YaMessagePtr : public Steinberg::Vst::IMessage { */ explicit YaMessagePtr(IMessage& message); - ~YaMessagePtr() noexcept; + virtual ~YaMessagePtr() noexcept; DECLARE_FUNKNOWN_METHODS @@ -124,7 +124,7 @@ class YaMessage : public Steinberg::Vst::IMessage { */ YaMessage() noexcept; - ~YaMessage() noexcept; + virtual ~YaMessage() noexcept; DECLARE_FUNKNOWN_METHODS diff --git a/src/common/serialization/vst3/param-value-queue.cpp b/src/common/serialization/vst3/param-value-queue.cpp index b16df526..d338ea14 100644 --- a/src/common/serialization/vst3/param-value-queue.cpp +++ b/src/common/serialization/vst3/param-value-queue.cpp @@ -66,10 +66,11 @@ int32 PLUGIN_API YaParamValueQueue::getPointCount() { return static_cast(queue_.size()); } -tresult PLUGIN_API -YaParamValueQueue::getPoint(int32 index, - int32& sampleOffset /*out*/, - Steinberg::Vst::ParamValue& value /*out*/) { +tresult PLUGIN_API YaParamValueQueue::getPoint( + int32 index, + // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) + int32& sampleOffset /*out*/, + Steinberg::Vst::ParamValue& value /*out*/) { if (index < static_cast(queue_.size())) { sampleOffset = queue_[index].first; value = queue_[index].second; diff --git a/src/common/serialization/vst3/param-value-queue.h b/src/common/serialization/vst3/param-value-queue.h index 5bfb32d5..c8a13c19 100644 --- a/src/common/serialization/vst3/param-value-queue.h +++ b/src/common/serialization/vst3/param-value-queue.h @@ -39,6 +39,8 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue { */ YaParamValueQueue() noexcept; + virtual ~YaParamValueQueue() noexcept; + /** * Clear this queue in place so that it can be used to write parameter data * to. Used in `YaParameterChanges::addParameterData`. @@ -50,8 +52,6 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue { */ void repopulate(Steinberg::Vst::IParamValueQueue& original_queue); - ~YaParamValueQueue() noexcept; - DECLARE_FUNKNOWN_METHODS /** diff --git a/src/common/serialization/vst3/parameter-changes.h b/src/common/serialization/vst3/parameter-changes.h index aea15529..a07c129a 100644 --- a/src/common/serialization/vst3/parameter-changes.h +++ b/src/common/serialization/vst3/parameter-changes.h @@ -39,7 +39,7 @@ class YaParameterChanges : public Steinberg::Vst::IParameterChanges { */ YaParameterChanges() noexcept; - ~YaParameterChanges() noexcept; + virtual ~YaParameterChanges() noexcept; /** * Remove all parameter changes. Used when a null pointer gets passed to the diff --git a/src/common/serialization/vst3/plug-frame/plug-frame.h b/src/common/serialization/vst3/plug-frame/plug-frame.h index fa3b5f58..e255f29c 100644 --- a/src/common/serialization/vst3/plug-frame/plug-frame.h +++ b/src/common/serialization/vst3/plug-frame/plug-frame.h @@ -59,6 +59,8 @@ class YaPlugFrame : public Steinberg::IPlugFrame { */ YaPlugFrame(ConstructArgs&& args) noexcept; + virtual ~YaPlugFrame() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plug-view/parameter-finder.h b/src/common/serialization/vst3/plug-view/parameter-finder.h index 6e5146f8..d72276a1 100644 --- a/src/common/serialization/vst3/plug-view/parameter-finder.h +++ b/src/common/serialization/vst3/plug-view/parameter-finder.h @@ -59,6 +59,8 @@ class YaParameterFinder : public Steinberg::Vst::IParameterFinder { */ YaParameterFinder(ConstructArgs&& args) noexcept; + virtual ~YaParameterFinder() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plug-view/plug-view-content-scale-support.h b/src/common/serialization/vst3/plug-view/plug-view-content-scale-support.h index 7a70ba6c..b65a328e 100644 --- a/src/common/serialization/vst3/plug-view/plug-view-content-scale-support.h +++ b/src/common/serialization/vst3/plug-view/plug-view-content-scale-support.h @@ -60,6 +60,8 @@ class YaPlugViewContentScaleSupport */ YaPlugViewContentScaleSupport(ConstructArgs&& args) noexcept; + virtual ~YaPlugViewContentScaleSupport() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plug-view/plug-view.h b/src/common/serialization/vst3/plug-view/plug-view.h index 37cb1db2..da7d4f04 100644 --- a/src/common/serialization/vst3/plug-view/plug-view.h +++ b/src/common/serialization/vst3/plug-view/plug-view.h @@ -61,6 +61,8 @@ class YaPlugView : public Steinberg::IPlugView { */ YaPlugView(ConstructArgs&& args) noexcept; + virtual ~YaPlugView() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin-factory/plugin-factory.h b/src/common/serialization/vst3/plugin-factory/plugin-factory.h index d0b0f73e..901a5492 100644 --- a/src/common/serialization/vst3/plugin-factory/plugin-factory.h +++ b/src/common/serialization/vst3/plugin-factory/plugin-factory.h @@ -124,6 +124,8 @@ class YaPluginFactory3 : public Steinberg::IPluginFactory3 { */ YaPluginFactory3(ConstructArgs&& args) noexcept; + virtual ~YaPluginFactory3() noexcept = default; + inline bool supports_plugin_factory() const noexcept { return arguments_.supports_plugin_factory; } diff --git a/src/common/serialization/vst3/plugin/audio-presentation-latency.h b/src/common/serialization/vst3/plugin/audio-presentation-latency.h index db813fbc..1f48117a 100644 --- a/src/common/serialization/vst3/plugin/audio-presentation-latency.h +++ b/src/common/serialization/vst3/plugin/audio-presentation-latency.h @@ -60,6 +60,8 @@ class YaAudioPresentationLatency */ YaAudioPresentationLatency(ConstructArgs&& args) noexcept; + virtual ~YaAudioPresentationLatency() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/audio-processor.h b/src/common/serialization/vst3/plugin/audio-processor.h index 29917be4..a8a4e144 100644 --- a/src/common/serialization/vst3/plugin/audio-processor.h +++ b/src/common/serialization/vst3/plugin/audio-processor.h @@ -62,6 +62,8 @@ class YaAudioProcessor : public Steinberg::Vst::IAudioProcessor { */ YaAudioProcessor(ConstructArgs&& args) noexcept; + virtual ~YaAudioProcessor() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/automation-state.h b/src/common/serialization/vst3/plugin/automation-state.h index da018eca..04bd5831 100644 --- a/src/common/serialization/vst3/plugin/automation-state.h +++ b/src/common/serialization/vst3/plugin/automation-state.h @@ -62,6 +62,8 @@ class YaAutomationState : public Steinberg::Vst::IAutomationState { */ YaAutomationState(ConstructArgs&& args) noexcept; + virtual ~YaAutomationState() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/component.h b/src/common/serialization/vst3/plugin/component.h index ddcb8929..4314cbb0 100644 --- a/src/common/serialization/vst3/plugin/component.h +++ b/src/common/serialization/vst3/plugin/component.h @@ -63,6 +63,8 @@ class YaComponent : public Steinberg::Vst::IComponent { */ YaComponent(ConstructArgs&& args) noexcept; + virtual ~YaComponent() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/connection-point.h b/src/common/serialization/vst3/plugin/connection-point.h index 86c501a7..4897ce73 100644 --- a/src/common/serialization/vst3/plugin/connection-point.h +++ b/src/common/serialization/vst3/plugin/connection-point.h @@ -107,6 +107,8 @@ class YaConnectionPoint : public Steinberg::Vst::IConnectionPoint { */ YaConnectionPoint(ConstructArgs&& args) noexcept; + virtual ~YaConnectionPoint() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/edit-controller-2.h b/src/common/serialization/vst3/plugin/edit-controller-2.h index a0c57b0f..d1f7dab9 100644 --- a/src/common/serialization/vst3/plugin/edit-controller-2.h +++ b/src/common/serialization/vst3/plugin/edit-controller-2.h @@ -59,6 +59,8 @@ class YaEditController2 : public Steinberg::Vst::IEditController2 { */ YaEditController2(ConstructArgs&& args) noexcept; + virtual ~YaEditController2() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/edit-controller-host-editing.h b/src/common/serialization/vst3/plugin/edit-controller-host-editing.h index 8c2ecef7..03db3cbc 100644 --- a/src/common/serialization/vst3/plugin/edit-controller-host-editing.h +++ b/src/common/serialization/vst3/plugin/edit-controller-host-editing.h @@ -60,6 +60,8 @@ class YaEditControllerHostEditing */ YaEditControllerHostEditing(ConstructArgs&& args) noexcept; + virtual ~YaEditControllerHostEditing() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/edit-controller.h b/src/common/serialization/vst3/plugin/edit-controller.h index 007413b9..6d155623 100644 --- a/src/common/serialization/vst3/plugin/edit-controller.h +++ b/src/common/serialization/vst3/plugin/edit-controller.h @@ -63,6 +63,8 @@ class YaEditController : public Steinberg::Vst::IEditController { */ YaEditController(ConstructArgs&& args) noexcept; + virtual ~YaEditController() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/info-listener.h b/src/common/serialization/vst3/plugin/info-listener.h index d4706163..58f63239 100644 --- a/src/common/serialization/vst3/plugin/info-listener.h +++ b/src/common/serialization/vst3/plugin/info-listener.h @@ -60,6 +60,8 @@ class YaInfoListener : public Steinberg::Vst::ChannelContext::IInfoListener { */ YaInfoListener(ConstructArgs&& args) noexcept; + virtual ~YaInfoListener() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/keyswitch-controller.h b/src/common/serialization/vst3/plugin/keyswitch-controller.h index 0e628593..05376e85 100644 --- a/src/common/serialization/vst3/plugin/keyswitch-controller.h +++ b/src/common/serialization/vst3/plugin/keyswitch-controller.h @@ -59,6 +59,8 @@ class YaKeyswitchController : public Steinberg::Vst::IKeyswitchController { */ YaKeyswitchController(ConstructArgs&& args) noexcept; + virtual ~YaKeyswitchController() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/midi-learn.h b/src/common/serialization/vst3/plugin/midi-learn.h index 22c66ab3..05ff8b0b 100644 --- a/src/common/serialization/vst3/plugin/midi-learn.h +++ b/src/common/serialization/vst3/plugin/midi-learn.h @@ -59,6 +59,8 @@ class YaMidiLearn : public Steinberg::Vst::IMidiLearn { */ YaMidiLearn(ConstructArgs&& args) noexcept; + virtual ~YaMidiLearn() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/midi-mapping.h b/src/common/serialization/vst3/plugin/midi-mapping.h index a9fb5eae..256aff8c 100644 --- a/src/common/serialization/vst3/plugin/midi-mapping.h +++ b/src/common/serialization/vst3/plugin/midi-mapping.h @@ -59,6 +59,8 @@ class YaMidiMapping : public Steinberg::Vst::IMidiMapping { */ YaMidiMapping(ConstructArgs&& args) noexcept; + virtual ~YaMidiMapping() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/note-expression-controller.h b/src/common/serialization/vst3/plugin/note-expression-controller.h index 6eec9b38..0da12556 100644 --- a/src/common/serialization/vst3/plugin/note-expression-controller.h +++ b/src/common/serialization/vst3/plugin/note-expression-controller.h @@ -63,6 +63,8 @@ class YaNoteExpressionController */ YaNoteExpressionController(ConstructArgs&& args) noexcept; + virtual ~YaNoteExpressionController() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.h b/src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.h index 3f908b42..461affce 100644 --- a/src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.h +++ b/src/common/serialization/vst3/plugin/note-expression-physical-ui-mapping.h @@ -62,6 +62,8 @@ class YaNoteExpressionPhysicalUIMapping */ YaNoteExpressionPhysicalUIMapping(ConstructArgs&& args) noexcept; + virtual ~YaNoteExpressionPhysicalUIMapping() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/parameter-function-name.h b/src/common/serialization/vst3/plugin/parameter-function-name.h index c951bdec..cbf3608a 100644 --- a/src/common/serialization/vst3/plugin/parameter-function-name.h +++ b/src/common/serialization/vst3/plugin/parameter-function-name.h @@ -61,6 +61,8 @@ class YaParameterFunctionName : public Steinberg::Vst::IParameterFunctionName { */ YaParameterFunctionName(ConstructArgs&& args) noexcept; + virtual ~YaParameterFunctionName() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/plugin-base.h b/src/common/serialization/vst3/plugin/plugin-base.h index c623756c..4c919489 100644 --- a/src/common/serialization/vst3/plugin/plugin-base.h +++ b/src/common/serialization/vst3/plugin/plugin-base.h @@ -61,6 +61,8 @@ class YaPluginBase : public Steinberg::IPluginBase { */ YaPluginBase(ConstructArgs&& args) noexcept; + virtual ~YaPluginBase() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } // The request and response for `IPluginBase::initialize()` is defined diff --git a/src/common/serialization/vst3/plugin/prefetchable-support.h b/src/common/serialization/vst3/plugin/prefetchable-support.h index 01a85642..5e834245 100644 --- a/src/common/serialization/vst3/plugin/prefetchable-support.h +++ b/src/common/serialization/vst3/plugin/prefetchable-support.h @@ -60,6 +60,8 @@ class YaPrefetchableSupport : public Steinberg::Vst::IPrefetchableSupport { */ YaPrefetchableSupport(ConstructArgs&& args) noexcept; + virtual ~YaPrefetchableSupport() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/process-context-requirements.h b/src/common/serialization/vst3/plugin/process-context-requirements.h index 22bb2d0c..0dd24269 100644 --- a/src/common/serialization/vst3/plugin/process-context-requirements.h +++ b/src/common/serialization/vst3/plugin/process-context-requirements.h @@ -62,6 +62,8 @@ class YaProcessContextRequirements */ YaProcessContextRequirements(ConstructArgs&& args) noexcept; + virtual ~YaProcessContextRequirements() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/program-list-data.h b/src/common/serialization/vst3/plugin/program-list-data.h index ac655386..13e88b8b 100644 --- a/src/common/serialization/vst3/plugin/program-list-data.h +++ b/src/common/serialization/vst3/plugin/program-list-data.h @@ -60,6 +60,8 @@ class YaProgramListData : public Steinberg::Vst::IProgramListData { */ YaProgramListData(ConstructArgs&& args) noexcept; + virtual ~YaProgramListData() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/unit-data.h b/src/common/serialization/vst3/plugin/unit-data.h index 17038d70..e0c0a154 100644 --- a/src/common/serialization/vst3/plugin/unit-data.h +++ b/src/common/serialization/vst3/plugin/unit-data.h @@ -60,6 +60,8 @@ class YaUnitData : public Steinberg::Vst::IUnitData { */ YaUnitData(ConstructArgs&& args) noexcept; + virtual ~YaUnitData() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/unit-info.h b/src/common/serialization/vst3/plugin/unit-info.h index 5c4d2b60..cfa2bbc2 100644 --- a/src/common/serialization/vst3/plugin/unit-info.h +++ b/src/common/serialization/vst3/plugin/unit-info.h @@ -60,6 +60,8 @@ class YaUnitInfo : public Steinberg::Vst::IUnitInfo { */ YaUnitInfo(ConstructArgs&& args) noexcept; + virtual ~YaUnitInfo() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/common/serialization/vst3/plugin/xml-representation-controller.h b/src/common/serialization/vst3/plugin/xml-representation-controller.h index c4861123..61b9658c 100644 --- a/src/common/serialization/vst3/plugin/xml-representation-controller.h +++ b/src/common/serialization/vst3/plugin/xml-representation-controller.h @@ -67,6 +67,8 @@ class YaXmlRepresentationController */ YaXmlRepresentationController(ConstructArgs&& args) noexcept; + virtual ~YaXmlRepresentationController() noexcept = default; + inline bool supported() const noexcept { return arguments_.supported; } /** diff --git a/src/plugin/bridges/common.h b/src/plugin/bridges/common.h index b0339c30..ed6e2dca 100644 --- a/src/plugin/bridges/common.h +++ b/src/plugin/bridges/common.h @@ -129,7 +129,7 @@ class PluginBridge { io_context_.run(); }) {} - virtual ~PluginBridge() noexcept {}; + virtual ~PluginBridge() noexcept = default; protected: /** diff --git a/src/plugin/bridges/vst3-impls/plug-view-proxy.h b/src/plugin/bridges/vst3-impls/plug-view-proxy.h index 8d67419c..3401ee0e 100644 --- a/src/plugin/bridges/vst3-impls/plug-view-proxy.h +++ b/src/plugin/bridges/vst3-impls/plug-view-proxy.h @@ -49,7 +49,7 @@ class RunLoopTasks : public Steinberg::Linux::IEventHandler { /** * Unregister the event handler and close the file descriptor on cleanup. */ - ~RunLoopTasks(); + virtual ~RunLoopTasks(); DECLARE_FUNKNOWN_METHODS diff --git a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp index 023db5a7..4d41314c 100644 --- a/src/plugin/bridges/vst3-impls/plugin-proxy.cpp +++ b/src/plugin/bridges/vst3-impls/plugin-proxy.cpp @@ -390,6 +390,7 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type, } tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo( + // NOLINTNEXTLINE(bugprone-easily-swappable-parameters) Steinberg::Vst::RoutingInfo& inInfo, Steinberg::Vst::RoutingInfo& outInfo /*out*/) { const GetRoutingInfoResponse response = diff --git a/src/plugin/host-process.cpp b/src/plugin/host-process.cpp index d7328b4a..e1f1e1c7 100644 --- a/src/plugin/host-process.cpp +++ b/src/plugin/host-process.cpp @@ -25,8 +25,6 @@ namespace fs = ghc::filesystem; HostProcess::HostProcess(asio::io_context& io_context, Sockets& sockets) : sockets_(sockets), stdout_pipe_(io_context), stderr_pipe_(io_context) {} -HostProcess::~HostProcess() noexcept {} - Process::Handle HostProcess::launch_host( const ghc::filesystem::path& host_path, std::initializer_list args, diff --git a/src/plugin/host-process.h b/src/plugin/host-process.h index 8dccb42a..6e5dd701 100644 --- a/src/plugin/host-process.h +++ b/src/plugin/host-process.h @@ -37,7 +37,7 @@ */ class HostProcess { public: - virtual ~HostProcess() noexcept; + virtual ~HostProcess() noexcept = default; /** * Return the full path to the host application in use. The host application diff --git a/src/wine-host/bridges/common.cpp b/src/wine-host/bridges/common.cpp index b8c035a6..6a9f3b9f 100644 --- a/src/wine-host/bridges/common.cpp +++ b/src/wine-host/bridges/common.cpp @@ -57,8 +57,6 @@ HostBridge::HostBridge(MainContext& main_context, parent_pid_(parent_pid), watchdog_guard_(main_context.register_watchdog(*this)) {} -HostBridge::~HostBridge() noexcept {} - void HostBridge::handle_events() noexcept { MSG msg; diff --git a/src/wine-host/bridges/common.h b/src/wine-host/bridges/common.h index d2568179..69d0e235 100644 --- a/src/wine-host/bridges/common.h +++ b/src/wine-host/bridges/common.h @@ -37,7 +37,7 @@ class HostBridge { pid_t parent_pid); public: - virtual ~HostBridge() noexcept; + virtual ~HostBridge() noexcept = default; /** * If a plugin instance returns `true` here, then the event loop should not