diff --git a/gsk/gpu/gskgpunodeprocessor.c b/gsk/gpu/gskgpunodeprocessor.c index fd4d80379b..0f4acb30df 100644 --- a/gsk/gpu/gskgpunodeprocessor.c +++ b/gsk/gpu/gskgpunodeprocessor.c @@ -3882,13 +3882,12 @@ gsk_gpu_node_processor_render (GskGpuFrame *frame, GskRenderPassType pass_type) { GskGpuNodeProcessor self; - int i; - for (i = 0; i < cairo_region_num_rectangles (clip); i++) + while (cairo_region_num_rectangles (clip) > 0) { cairo_rectangle_int_t rect; - cairo_region_get_rectangle (clip, i, &rect); + cairo_region_get_rectangle (clip, 0, &rect); gsk_gpu_node_processor_init (&self, frame, @@ -3916,6 +3915,8 @@ gsk_gpu_node_processor_render (GskGpuFrame *frame, target, pass_type); + cairo_region_subtract_rectangle (clip, &self.scissor); + gsk_gpu_node_processor_finish (&self); }