fix: only use IApplication::instance instead of Application::instance (#5540)

This commit is contained in:
pajlada
2024-08-11 14:03:47 +02:00
committed by GitHub
parent 1ccdaea8ee
commit 832e70e314
2 changed files with 27 additions and 21 deletions
+20 -9
View File
@@ -124,18 +124,23 @@ SeventvEventAPI *makeSeventvEventAPI(Settings &settings)
const QString TWITCH_PUBSUB_URL = "wss://pubsub-edge.twitch.tv";
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
IApplication *INSTANCE = nullptr;
} // namespace
namespace chatterino {
static std::atomic<bool> isAppInitialized{false};
Application *Application::instance = nullptr;
IApplication *IApplication::instance = nullptr;
IApplication::IApplication()
{
IApplication::instance = this;
INSTANCE = this;
}
IApplication::~IApplication()
{
INSTANCE = nullptr;
}
// this class is responsible for handling the workflow of Chatterino
@@ -182,8 +187,6 @@ Application::Application(Settings &_settings, const Paths &paths,
#endif
, updates(_updates)
{
Application::instance = this;
// We can safely ignore this signal's connection since the Application will always
// be destroyed after fonts
std::ignore = this->fonts->fontChanged.connect([this]() {
@@ -193,7 +196,8 @@ Application::Application(Settings &_settings, const Paths &paths,
Application::~Application()
{
Application::instance = nullptr;
// we do this early to ensure getApp isn't used in any dtors
INSTANCE = nullptr;
}
void Application::initialize(Settings &settings, const Paths &paths)
@@ -528,6 +532,13 @@ PluginController *Application::getPlugins()
}
#endif
Updates &Application::getUpdates()
{
assertInGuiThread();
return this->updates;
}
ITwitchIrcServer *Application::getTwitch()
{
assertInGuiThread();
@@ -1180,9 +1191,9 @@ void Application::initSeventvEventAPI()
IApplication *getApp()
{
assert(IApplication::instance != nullptr);
assert(INSTANCE != nullptr);
return IApplication::instance;
return INSTANCE;
}
} // namespace chatterino