diff --git a/Userland/Libraries/LibGUI/Application.cpp b/Userland/Libraries/LibGUI/Application.cpp index 58e80f2390..5b5b7554a6 100644 --- a/Userland/Libraries/LibGUI/Application.cpp +++ b/Userland/Libraries/LibGUI/Application.cpp @@ -101,8 +101,16 @@ Application::Application(int argc, char** argv, Core::EventLoop::MakeInspectable }); } +static bool s_in_teardown; + +bool Application::in_teardown() +{ + return s_in_teardown; +} + Application::~Application() { + s_in_teardown = true; revoke_weak_ptrs(); } diff --git a/Userland/Libraries/LibGUI/Application.h b/Userland/Libraries/LibGUI/Application.h index 8847c35ae5..31c4a421a9 100644 --- a/Userland/Libraries/LibGUI/Application.h +++ b/Userland/Libraries/LibGUI/Application.h @@ -27,6 +27,8 @@ public: ~Application(); + static bool in_teardown(); + int exec(); void quit(int = 0);