mirror of
https://github.com/brl/mutter.git
synced 2024-11-12 17:27:03 -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,27 +879,34 @@ 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;
|
||||||
|
|
||||||
cairo_region_get_extents (fb_clip_region, &clip_rect);
|
|
||||||
|
|
||||||
calculate_scissor_region (&clip_rect,
|
|
||||||
subpixel_compensation,
|
|
||||||
fb_width, fb_height,
|
|
||||||
&scissor_rect);
|
|
||||||
|
|
||||||
CLUTTER_NOTE (CLIPPING,
|
|
||||||
"Stage clip pushed: x=%d, y=%d, width=%d, height=%d\n",
|
|
||||||
scissor_rect.x,
|
|
||||||
scissor_rect.y,
|
|
||||||
scissor_rect.width,
|
|
||||||
scissor_rect.height);
|
|
||||||
|
|
||||||
stage_cogl->using_clipped_redraw = TRUE;
|
stage_cogl->using_clipped_redraw = TRUE;
|
||||||
|
|
||||||
cogl_framebuffer_push_scissor_clip (fb,
|
if (cairo_region_num_rectangles (fb_clip_region) == 1)
|
||||||
scissor_rect.x,
|
{
|
||||||
scissor_rect.y,
|
cairo_region_get_extents (fb_clip_region, &clip_rect);
|
||||||
scissor_rect.width,
|
|
||||||
scissor_rect.height);
|
calculate_scissor_region (&clip_rect,
|
||||||
|
subpixel_compensation,
|
||||||
|
fb_width, fb_height,
|
||||||
|
&scissor_rect);
|
||||||
|
|
||||||
|
CLUTTER_NOTE (CLIPPING,
|
||||||
|
"Stage clip pushed: x=%d, y=%d, width=%d, height=%d\n",
|
||||||
|
scissor_rect.x,
|
||||||
|
scissor_rect.y,
|
||||||
|
scissor_rect.width,
|
||||||
|
scissor_rect.height);
|
||||||
|
|
||||||
|
cogl_framebuffer_push_scissor_clip (fb,
|
||||||
|
scissor_rect.x,
|
||||||
|
scissor_rect.y,
|
||||||
|
scissor_rect.width,
|
||||||
|
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