aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-11-18 20:36:55 +0800
committerYuqian Yang <crupest@crupest.life>2025-11-18 20:36:55 +0800
commit3648f669cb42cdd9d232d60c8b9715dfbbe5b31a (patch)
tree1c1914d49b5689b36549285411895c7611e047f0
parenteca67e7d2bd227433eb4b47b499cfcc0106a3eaa (diff)
downloadcru-3648f669cb42cdd9d232d60c8b9715dfbbe5b31a.tar.gz
cru-3648f669cb42cdd9d232d60c8b9715dfbbe5b31a.tar.bz2
cru-3648f669cb42cdd9d232d60c8b9715dfbbe5b31a.zip
(xcb): fix cairo fill geometry. fix get mouse pos after window destroyed.
-rw-r--r--src/platform/graphics/cairo/CairoPainter.cpp1
-rw-r--r--src/platform/gui/xcb/Window.cpp3
2 files changed, 4 insertions, 0 deletions
diff --git a/src/platform/graphics/cairo/CairoPainter.cpp b/src/platform/graphics/cairo/CairoPainter.cpp
index a0a28337..1db00efa 100644
--- a/src/platform/graphics/cairo/CairoPainter.cpp
+++ b/src/platform/graphics/cairo/CairoPainter.cpp
@@ -166,6 +166,7 @@ void CairoPainter::FillGeometry(IGeometry* geometry, IBrush* brush) {
cairo_save(cairo_);
cairo_set_source(cairo_, cairo_pattern);
+ cairo_set_fill_rule(cairo_, CAIRO_FILL_RULE_EVEN_ODD);
cairo_new_path(cairo_);
cairo_append_path(cairo_, cairo_path);
cairo_fill(cairo_);
diff --git a/src/platform/gui/xcb/Window.cpp b/src/platform/gui/xcb/Window.cpp
index 6728fbbd..f85ec634 100644
--- a/src/platform/gui/xcb/Window.cpp
+++ b/src/platform/gui/xcb/Window.cpp
@@ -242,6 +242,9 @@ Point XcbWindow::GetMousePosition() {
auto cookie = xcb_query_pointer(application_->GetXcbConnection(), window);
auto reply = MakeAutoFree(xcb_query_pointer_reply(
application_->GetXcbConnection(), cookie, nullptr));
+ if (!reply) {
+ return {};
+ }
return Point(reply->win_x, reply->win_y);
}