From 04d243699cbde40fe69472f4c4df38c36f7942ef Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 18 Nov 2025 17:31:23 +0800 Subject: Move delete later to platform::gui. --- src/platform/gui/UiApplication.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/platform/gui/UiApplication.cpp') diff --git a/src/platform/gui/UiApplication.cpp b/src/platform/gui/UiApplication.cpp index f035224f..56570125 100644 --- a/src/platform/gui/UiApplication.cpp +++ b/src/platform/gui/UiApplication.cpp @@ -1,9 +1,23 @@ #include "cru/platform/gui/UiApplication.h" - #include "cru/base/Base.h" +#include + namespace cru::platform::gui { +void DeleteLaterPool::Add(Object* object) { pool_.push_back(object); } + +void DeleteLaterPool::Clean() { + std::unordered_set deleted; + for (auto object : pool_) { + if (!deleted.contains(object)) { + deleted.insert(object); + delete object; + } + } + pool_.clear(); +} + namespace { IUiApplication* instance = nullptr; } @@ -12,7 +26,7 @@ IUiApplication* IUiApplication::GetInstance() { return instance; } IUiApplication::IUiApplication() { if (instance) { - throw std::runtime_error("An ui application has already been created."); + throw Exception("A ui application has already been created."); } instance = this; -- cgit v1.2.3