gl renderer: Ignore rounded clip that only increase the clip

This fixes the widget factory rendering too much.

In the widget-factory, we generally have a pretty small update area (two
spinners and a progressbar). We take the extents of that as a update
area and inital clip.

However, the first clip node we see is from the toplevel window, which
essentially increases the clip again to almost the entire window.

Fix that by ignoring such cases.
This commit is contained in:
Timm Bäder 2020-07-03 06:41:29 +02:00
parent d6b3ac850d
commit 34008e6aab

View File

@ -1313,6 +1313,15 @@ render_rounded_clip_node (GskGLRenderer *self,
transformed_clip.corner[i].height = clip->corner[i].height * scale;
}
/* If the new clip entirely contains the current clip, the intersection is simply
* the current clip, so we can ignore the new one */
if (rounded_inner_rect_contains_rect (&transformed_clip, &builder->current_clip->bounds))
{
gsk_gl_renderer_add_render_ops (self, child, builder);
return;
}
/* TODO: Intersect current and new clip */
ops_push_clip (builder, &transformed_clip);
gsk_gl_renderer_add_render_ops (self, child, builder);
ops_pop_clip (builder);