diff options
| author | Yuqian Yang <crupest@crupest.life> | 2025-11-18 17:31:23 +0800 |
|---|---|---|
| committer | Yuqian Yang <crupest@crupest.life> | 2025-11-18 17:31:23 +0800 |
| commit | 04d243699cbde40fe69472f4c4df38c36f7942ef (patch) | |
| tree | af2a2031ab7f2d9ce03cf677eba066e11f32a0c9 /src/platform/gui/UiApplication.cpp | |
| parent | 358dc1498623d53f1d8bedf5172743deb6c03811 (diff) | |
| download | cru-04d243699cbde40fe69472f4c4df38c36f7942ef.tar.gz cru-04d243699cbde40fe69472f4c4df38c36f7942ef.tar.bz2 cru-04d243699cbde40fe69472f4c4df38c36f7942ef.zip | |
Move delete later to platform::gui.
Diffstat (limited to 'src/platform/gui/UiApplication.cpp')
| -rw-r--r-- | src/platform/gui/UiApplication.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
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 <unordered_set> + namespace cru::platform::gui { +void DeleteLaterPool::Add(Object* object) { pool_.push_back(object); } + +void DeleteLaterPool::Clean() { + std::unordered_set<Object*> 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; |
