aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-18 17:47:56 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-18 18:11:19 +0800
commit73c55a65fc2d3200adab6a48ffc28c66bbf9159b (patch)
tree6df433746fd55ac4d786dea25fa0cddcc36a6349 /include
parent95587a99ffb2680532879b0470d3cbb3bf9e736f (diff)
downloadcru-73c55a65fc2d3200adab6a48ffc28c66bbf9159b.tar.gz
cru-73c55a65fc2d3200adab6a48ffc28c66bbf9159b.tar.bz2
cru-73c55a65fc2d3200adab6a48ffc28c66bbf9159b.zip
Impl DeleteLater on XcbUiApplication.
Diffstat (limited to 'include')
-rw-r--r--include/cru/base/platform/unix/EventLoop.h3
-rw-r--r--include/cru/platform/gui/xcb/UiApplication.h3
2 files changed, 6 insertions, 0 deletions
diff --git a/include/cru/base/platform/unix/EventLoop.h b/include/cru/base/platform/unix/EventLoop.h
index c7674a91..84d413fb 100644
--- a/include/cru/base/platform/unix/EventLoop.h
+++ b/include/cru/base/platform/unix/EventLoop.h
@@ -5,6 +5,7 @@
#endif
#include "../../Base.h"
+#include "../../Event.h"
#include "../../Timer.h"
#include "UnixFile.h"
@@ -103,6 +104,8 @@ class UnixEventLoop : public Object {
void SetPoll(int fd, PollEvents events, PollHandler action);
void RemovePoll(int fd);
+ CRU_DEFINE_EVENT(AfterEachRound, std::nullptr_t)
+
private:
bool CheckPoll();
bool CheckActionPipe();
diff --git a/include/cru/platform/gui/xcb/UiApplication.h b/include/cru/platform/gui/xcb/UiApplication.h
index 55138fd3..2659b163 100644
--- a/include/cru/platform/gui/xcb/UiApplication.h
+++ b/include/cru/platform/gui/xcb/UiApplication.h
@@ -72,6 +72,8 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication {
std::function<void()> action) override;
void CancelTimer(long long id) override;
+ void DeleteLater(Object* object) override;
+
std::vector<INativeWindow*> GetAllWindow() override;
INativeWindow* CreateWindow() override;
@@ -102,6 +104,7 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication {
cru::platform::unix::UnixEventLoop event_loop_;
std::vector<std::function<void()>> quit_handlers_;
+ DeleteLaterPool delete_later_pool_;
bool is_quit_on_all_window_closed_;
std::vector<XcbWindow*> windows_;