gdk: Clamp frame region to surface size
authorBenjamin Otte <otte@redhat.com>
Sat, 13 May 2023 16:35:02 +0000 (18:35 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 16 May 2023 16:53:09 +0000 (18:53 +0200)
The region may be larger than the surface's size, but many rendering
APIs require the size to be clamped.

Fixes #5812

gdk/gdkdrawcontext.c

index 8699807cab4b587bfc006675fb2b889ea3f6385c..e461ebdd282b2a48338a63cb790433938331307f 100644 (file)
@@ -371,6 +371,12 @@ gdk_draw_context_begin_frame_full (GdkDrawContext       *context,
   priv->surface->paint_context = g_object_ref (context);
 
   GDK_DRAW_CONTEXT_GET_CLASS (context)->begin_frame (context, prefers_high_depth, priv->frame_region);
+
+  cairo_region_intersect_rectangle (priv->frame_region,
+                                    &(cairo_rectangle_int_t) {
+                                      0, 0,
+                                      priv->surface->width, priv->surface->height
+                                    });
 }
 
 #ifdef HAVE_SYSPROF