From 3648f669cb42cdd9d232d60c8b9715dfbbe5b31a Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Tue, 18 Nov 2025 20:36:55 +0800 Subject: (xcb): fix cairo fill geometry. fix get mouse pos after window destroyed. --- src/platform/graphics/cairo/CairoPainter.cpp | 1 + src/platform/gui/xcb/Window.cpp | 3 +++ 2 files changed, 4 insertions(+) (limited to 'src/platform') 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); } -- cgit v1.2.3