diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-02 17:35:47 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-03 22:48:05 +0800 |
commit | 1b197ca9997eb407407e508eb199b1e6fae78926 (patch) | |
tree | 12f5784d37f7cd06bcc9104f3d559368ee420136 /src/platform | |
parent | efce9cc6dbbeece12fe348ec742f9c501459d37d (diff) | |
download | cru-1b197ca9997eb407407e508eb199b1e6fae78926.tar.gz cru-1b197ca9997eb407407e508eb199b1e6fae78926.tar.bz2 cru-1b197ca9997eb407407e508eb199b1e6fae78926.zip |
Override Run and AddOnQuitHandler.
Diffstat (limited to 'src/platform')
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp index 6cd0a177..fefc1335 100644 --- a/src/platform/gui/xcb/UiApplication.cpp +++ b/src/platform/gui/xcb/UiApplication.cpp @@ -3,7 +3,7 @@ #include <xcb/xcb.h> namespace cru::platform::gui::xcb { -XcbUiApplication::XcbUiApplication() { +XcbUiApplication::XcbUiApplication() : exit_code_(0) { int screen_num; xcb_connection_t *connection = xcb_connect(NULL, &screen_num); this->CheckXcbConnectionError(); @@ -20,4 +20,19 @@ void XcbUiApplication::CheckXcbConnectionError() { throw XcbException("xcb_connection_has_error returned non-zero."); } } + +int XcbUiApplication::Run() { + + // TODO: A Big Implement. + + for (const auto &handler : this->quit_handlers_) { + handler(); + } + + return exit_code_; +} + +void XcbUiApplication::AddOnQuitHandler(std::function<void()> handler) { + this->quit_handlers_.push_back(std::move(handler)); +} } // namespace cru::platform::gui::xcb |