diff options
author | Yuqian Yang <crupest@crupest.life> | 2025-09-10 01:01:47 +0800 |
---|---|---|
committer | Yuqian Yang <crupest@crupest.life> | 2025-09-10 01:01:47 +0800 |
commit | 18e330f9f4a673da78e6503c697619ad99b4bdbf (patch) | |
tree | ed4888d836a52a69e08b40557bb18c978da2a80a /src/platform/gui/xcb/UiApplication.cpp | |
parent | e8e71847dccceee038338dab4e430957639f3d63 (diff) | |
download | cru-18e330f9f4a673da78e6503c697619ad99b4bdbf.tar.gz cru-18e330f9f4a673da78e6503c697619ad99b4bdbf.tar.bz2 cru-18e330f9f4a673da78e6503c697619ad99b4bdbf.zip |
xcb window painter.
Diffstat (limited to 'src/platform/gui/xcb/UiApplication.cpp')
-rw-r--r-- | src/platform/gui/xcb/UiApplication.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/platform/gui/xcb/UiApplication.cpp b/src/platform/gui/xcb/UiApplication.cpp index 619e71ef..462e2fde 100644 --- a/src/platform/gui/xcb/UiApplication.cpp +++ b/src/platform/gui/xcb/UiApplication.cpp @@ -1,12 +1,21 @@ #include "cru/platform/gui/xcb/UiApplication.h" +#include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" #include "cru/platform/gui/xcb/Window.h" #include <poll.h> #include <xcb/xcb.h> namespace cru::platform::gui::xcb { -XcbUiApplication::XcbUiApplication() { +XcbUiApplication::XcbUiApplication( + graphics::cairo::CairoGraphicsFactory *cairo_factory) { + release_cairo_factory_ = false; + if (cairo_factory == nullptr) { + cairo_factory = new graphics::cairo::CairoGraphicsFactory(); + release_cairo_factory_ = true; + } + cairo_factory_ = cairo_factory; + is_quit_on_all_window_closed_ = false; int screen_num; @@ -21,7 +30,12 @@ XcbUiApplication::XcbUiApplication() { this->screen_ = iter.data; } -XcbUiApplication::~XcbUiApplication() { xcb_disconnect(this->xcb_connection_); } +XcbUiApplication::~XcbUiApplication() { + xcb_disconnect(this->xcb_connection_); + if (release_cairo_factory_) { + delete cairo_factory_; + } +} void XcbUiApplication::CheckXcbConnectionError() { if (xcb_connection_has_error(this->xcb_connection_)) { |