aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui/UiApplication.h
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-18 17:31:23 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-18 17:31:23 +0800
commit04d243699cbde40fe69472f4c4df38c36f7942ef (patch)
treeaf2a2031ab7f2d9ce03cf677eba066e11f32a0c9 /include/cru/platform/gui/UiApplication.h
parent358dc1498623d53f1d8bedf5172743deb6c03811 (diff)
downloadcru-04d243699cbde40fe69472f4c4df38c36f7942ef.tar.gz
cru-04d243699cbde40fe69472f4c4df38c36f7942ef.tar.bz2
cru-04d243699cbde40fe69472f4c4df38c36f7942ef.zip
Move delete later to platform::gui.
Diffstat (limited to 'include/cru/platform/gui/UiApplication.h')
-rw-r--r--include/cru/platform/gui/UiApplication.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/cru/platform/gui/UiApplication.h b/include/cru/platform/gui/UiApplication.h
index 84011275..c4454b2e 100644
--- a/include/cru/platform/gui/UiApplication.h
+++ b/include/cru/platform/gui/UiApplication.h
@@ -16,6 +16,18 @@ struct INativeWindow;
struct IInputMethodContext;
struct IClipboard;
+class CRU_PLATFORM_GUI_API DeleteLaterPool : public Object {
+ public:
+ void Add(Object* object);
+
+ void Clean();
+
+ private:
+ // May contain duplicate object pointer. When performing deleting, use a set
+ // to record deleted objects to avoid double delete.
+ std::vector<Object*> pool_;
+};
+
// The entry point of a ui application.
struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource {
public:
@@ -51,6 +63,8 @@ struct CRU_PLATFORM_GUI_API IUiApplication : public virtual IPlatformResource {
// result in no-op.
virtual void CancelTimer(long long id) = 0;
+ virtual void DeleteLater(Object* object) = 0;
+
virtual std::vector<INativeWindow*> GetAllWindow() = 0;
virtual INativeWindow* CreateWindow() = 0;