From 9fbcedb93e3f0d898ae99633e55abddb3f922c9f Mon Sep 17 00:00:00 2001 From: reuk Date: Tue, 21 Sep 2021 11:08:36 +0100 Subject: [PATCH] ReaperEmbeddedViewDemo: Make refcounting slightly more consistent --- examples/Plugins/ReaperEmbeddedViewPluginDemo.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/examples/Plugins/ReaperEmbeddedViewPluginDemo.h b/examples/Plugins/ReaperEmbeddedViewPluginDemo.h index 614f1bd914..2d5b2659b9 100644 --- a/examples/Plugins/ReaperEmbeddedViewPluginDemo.h +++ b/examples/Plugins/ReaperEmbeddedViewPluginDemo.h @@ -121,13 +121,14 @@ public: return listener.handledEmbeddedUIMessage (msg, parm2, parm3); } - Steinberg::uint32 PLUGIN_API addRef() override { return (Steinberg::uint32) ++refCount; } - Steinberg::uint32 PLUGIN_API release() override { return (Steinberg::uint32) --refCount; } + Steinberg::uint32 PLUGIN_API addRef() override { return ++refCount; } + Steinberg::uint32 PLUGIN_API release() override { return --refCount; } Steinberg::tresult PLUGIN_API queryInterface (const Steinberg::TUID tuid, void** obj) override { if (std::memcmp (tuid, iid, sizeof (Steinberg::TUID)) == 0) { + ++refCount; *obj = this; return Steinberg::kResultOk; } @@ -138,7 +139,7 @@ public: private: EmbeddedViewListener& listener; - std::atomic refCount { 1 }; + std::atomic refCount { 1 }; }; JUCE_END_IGNORE_WARNINGS_GCC_LIKE @@ -237,11 +238,8 @@ public: int32_t queryIEditController (const Steinberg::TUID tuid, void** obj) override { - if (std::memcmp (tuid, embeddedUi.iid, sizeof (Steinberg::TUID)) == 0) - { - *obj = &embeddedUi; + if (embeddedUi.queryInterface (tuid, obj) == Steinberg::kResultOk) return Steinberg::kResultOk; - } *obj = nullptr; return Steinberg::kNoInterface;