Lua: Bind lifetime of LuaEngine

We want to make sure that the LuaEngine is deleted when the plugin
is removed.

We also derive LuaEngine from QObject so we can use it as a guard in
QObject::connect calls.

Change-Id: I6b0568f11bee283f880ede9432b2a9fe83014758
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Marcus Tillmanns
2024-05-02 14:33:21 +02:00
parent a13aa8d3de
commit 218f07bdef
4 changed files with 29 additions and 10 deletions

View File

@@ -25,17 +25,24 @@ public:
QMap<QString, std::function<void(sol::function)>> m_hooks;
};
static LuaEngine *s_instance = nullptr;
LuaEngine &LuaEngine::instance()
{
static LuaEngine luaEngine;
return luaEngine;
Q_ASSERT(s_instance);
return *s_instance;
}
LuaEngine::LuaEngine()
: d(new LuaEnginePrivate())
{}
{
s_instance = this;
}
LuaEngine::~LuaEngine() = default;
LuaEngine::~LuaEngine()
{
s_instance = nullptr;
}
void LuaEngine::registerProvider(const QString &packageName, const PackageProvider &provider)
{