Skip to content

Commit

Permalink
ReaperEmbeddedViewDemo: Make refcounting slightly more consistent
Browse files Browse the repository at this point in the history
  • Loading branch information
reuk committed Sep 28, 2021
1 parent fd24769 commit 9fbcedb
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions examples/Plugins/ReaperEmbeddedViewPluginDemo.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,14 @@ class EmbeddedUI : public reaper::IReaperUIEmbedInterface
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;
}
Expand All @@ -138,7 +139,7 @@ class EmbeddedUI : public reaper::IReaperUIEmbedInterface

private:
EmbeddedViewListener& listener;
std::atomic<int> refCount { 1 };
std::atomic<Steinberg::uint32> refCount { 1 };
};

JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Expand Down Expand Up @@ -237,11 +238,8 @@ class ReaperEmbeddedViewDemo : public AudioProcessor,

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;
Expand Down

0 comments on commit 9fbcedb

Please sign in to comment.