From 73c55a65fc2d3200adab6a48ffc28c66bbf9159b Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 18 Nov 2025 17:47:56 +0800 Subject: Impl DeleteLater on XcbUiApplication. --- include/cru/base/platform/unix/EventLoop.h | 3 +++ include/cru/platform/gui/xcb/UiApplication.h | 3 +++ 2 files changed, 6 insertions(+) (limited to 'include/cru') 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 action) override; void CancelTimer(long long id) override; + void DeleteLater(Object* object) override; + std::vector GetAllWindow() override; INativeWindow* CreateWindow() override; @@ -102,6 +104,7 @@ class XcbUiApplication : public XcbResource, public virtual IUiApplication { cru::platform::unix::UnixEventLoop event_loop_; std::vector> quit_handlers_; + DeleteLaterPool delete_later_pool_; bool is_quit_on_all_window_closed_; std::vector windows_; -- cgit v1.2.3