From 08bc6703049b7ec53b4cd64fde663e69ec3c8580 Mon Sep 17 00:00:00 2001 From: Ben Harris Date: Sun, 20 Apr 2025 18:29:48 +0100 Subject: [PATCH] GTK: never deliberately create an image surface for Cairo rendering If gdk_window_create_similar_surface() isn't available, we now fall back to cairo_surface_create_similar(). This is relevant only on GTK between 2.00 and 2.22 with deprecated calls disabled. --- unix/window.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/unix/window.c b/unix/window.c index 726e6678..fc798211 100644 --- a/unix/window.c +++ b/unix/window.c @@ -812,8 +812,11 @@ static void drawing_area_setup(GtkFrontend *inst, int width, int height) gtk_widget_get_window(inst->area), CAIRO_CONTENT_COLOR, inst->backing_w, inst->backing_h); #else - inst->surface = cairo_image_surface_create( - CAIRO_FORMAT_ARGB32, inst->backing_w, inst->backing_h); + cairo_t *tmp_cr = gdk_cairo_create(gtk_widget_get_window(inst->area)); + inst->surface = cairo_surface_create_similar( + cairo_get_target(tmp_cr), + CAIRO_CONTENT_COLOR, inst->backing_w, inst->backing_h); + cairo_destroy(tmp_cr); #endif #endif