aboutsummaryrefslogtreecommitdiff
path: root/include/cru/platform/gui/UiApplication.h
diff options
context:
space:
mode:
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;