mirror of
https://github.com/brl/mutter.git
synced 2024-11-22 08:00:42 -05:00
clutter/cogl: Use regions for clipping if necessary
Use the new cogl function to perform clipping if the clip area consists of more than a single rectangle. https://gitlab.gnome.org/GNOME/mutter/merge_requests/867
This commit is contained in:
parent
a1116bc6c8
commit
8598b654ba
@ -879,6 +879,10 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
|
|||||||
cairo_rectangle_int_t clip_rect;
|
cairo_rectangle_int_t clip_rect;
|
||||||
cairo_rectangle_int_t scissor_rect;
|
cairo_rectangle_int_t scissor_rect;
|
||||||
|
|
||||||
|
stage_cogl->using_clipped_redraw = TRUE;
|
||||||
|
|
||||||
|
if (cairo_region_num_rectangles (fb_clip_region) == 1)
|
||||||
|
{
|
||||||
cairo_region_get_extents (fb_clip_region, &clip_rect);
|
cairo_region_get_extents (fb_clip_region, &clip_rect);
|
||||||
|
|
||||||
calculate_scissor_region (&clip_rect,
|
calculate_scissor_region (&clip_rect,
|
||||||
@ -893,13 +897,16 @@ clutter_stage_cogl_redraw_view (ClutterStageWindow *stage_window,
|
|||||||
scissor_rect.width,
|
scissor_rect.width,
|
||||||
scissor_rect.height);
|
scissor_rect.height);
|
||||||
|
|
||||||
stage_cogl->using_clipped_redraw = TRUE;
|
|
||||||
|
|
||||||
cogl_framebuffer_push_scissor_clip (fb,
|
cogl_framebuffer_push_scissor_clip (fb,
|
||||||
scissor_rect.x,
|
scissor_rect.x,
|
||||||
scissor_rect.y,
|
scissor_rect.y,
|
||||||
scissor_rect.width,
|
scissor_rect.width,
|
||||||
scissor_rect.height);
|
scissor_rect.height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cogl_framebuffer_push_region_clip (fb, fb_clip_region);
|
||||||
|
}
|
||||||
|
|
||||||
paint_stage (stage_cogl, view, fb_clip_region);
|
paint_stage (stage_cogl, view, fb_clip_region);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user