forked from AuroraMiddleware/gtk
snapshot: Limit cairo nodes to clip region
In certain cases, we might create large cairo nodes, resulting in surfaces so large, cairo can't handle them. Fix this by limiting the cairo node to the current clip region.
This commit is contained in:
parent
4240119d64
commit
3f367277fe
@ -1339,6 +1339,20 @@ gtk_snapshot_append_cairo (GtkSnapshot *snapshot,
|
||||
g_return_val_if_fail (bounds != NULL, NULL);
|
||||
|
||||
graphene_rect_offset_r (bounds, current_state->translate_x, current_state->translate_y, &real_bounds);
|
||||
|
||||
if (current_state->clip_region)
|
||||
{
|
||||
cairo_rectangle_int_t clip_extents;
|
||||
cairo_region_get_extents (current_state->clip_region, &clip_extents);
|
||||
graphene_rect_intersection (&GRAPHENE_RECT_INIT (
|
||||
clip_extents.x,
|
||||
clip_extents.y,
|
||||
clip_extents.width,
|
||||
clip_extents.height
|
||||
),
|
||||
&real_bounds, &real_bounds);
|
||||
}
|
||||
|
||||
node = gsk_cairo_node_new (&real_bounds);
|
||||
|
||||
if (name && snapshot->record_names)
|
||||
|
Loading…
Reference in New Issue
Block a user