clutter/stage-view: Ignore clipping rectangle for offscreen blit

In `clutter_stage_view_blit_offscreen()`, the given clipping rectangle
is in “view” coordinates whereas we intend to copy the whole actual
framebuffer, meaning that we cannot use the clipping rectangle.

Use the actual framebuffer size, starting at (0, 0) instead.

That fixes the issue with partial repainting with shadow framebuffer
when fractional scaling is enabled.

https://gitlab.gnome.org/GNOME/mutter/merge_requests/820
This commit is contained in:
Olivier Fourdan 2019-10-01 14:16:25 +02:00
parent 105a3f757a
commit 0a3f25c303

View File

@ -146,11 +146,14 @@ clutter_stage_view_blit_offscreen (ClutterStageView *view,
clutter_stage_view_get_offscreen_transformation_matrix (view, &matrix);
if (cogl_matrix_is_identity (&matrix))
{
int fb_width = cogl_framebuffer_get_width (priv->framebuffer);
int fb_height = cogl_framebuffer_get_height (priv->framebuffer);
if (cogl_blit_framebuffer (priv->offscreen,
priv->framebuffer,
rect->x, rect->y,
rect->x, rect->y,
rect->width, rect->height,
0, 0,
0, 0,
fb_width, fb_height,
NULL))
return;
}