popover: Stop using gdk_surface_create_similar_surface
authorMatthias Clasen <mclasen@redhat.com>
Sun, 2 Apr 2023 03:08:36 +0000 (23:08 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 2 Apr 2023 03:08:36 +0000 (23:08 -0400)
Just create the cairo image surface ourselves.

gtk/gtkpopover.c

index 9b62721fac18c31163a1ae0e84f0f51aa7126848..cf90a3bd7dcfcb79caa2701092d4fd103f7ed547 100644 (file)
@@ -1360,15 +1360,17 @@ gtk_popover_update_shape (GtkPopover *popover)
       cairo_t *cr;
       graphene_point_t p;
       double native_x, native_y;
+      int width, height, scale;
 
       gtk_native_get_surface_transform (GTK_NATIVE (popover), &native_x, &native_y);
       gtk_css_boxes_init (&content_css_boxes, priv->contents_widget);
 
-      cairo_surface =
-        gdk_surface_create_similar_surface (priv->surface,
-                                           CAIRO_CONTENT_COLOR_ALPHA,
-                                           gdk_surface_get_width (priv->surface),
-                                           gdk_surface_get_height (priv->surface));
+      width = gdk_surface_get_width (priv->surface);
+      height = gdk_surface_get_height (priv->surface);
+      scale = gdk_surface_get_scale_factor (priv->surface);
+
+      cairo_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width * scale, height * scale);
+      cairo_surface_set_device_scale (cairo_surface, scale, scale);
 
       cr = cairo_create (cairo_surface);