blur: Always allocate at least one pixel

This works around a crash when we try to blur a background that hasn't
yet had any space allocated for it, in particular when locking the screen
with mutter 3.36.1 and the Native Window Placement extension.

Workaround for <https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2538>.

Signed-off-by: Simon McVittie <smcv@debian.org>
This commit is contained in:
Simon McVittie 2020-04-02 19:32:18 +01:00
parent 0a4974ac8c
commit 5a83f003c7

View File

@ -360,6 +360,18 @@ update_fbo (FramebufferData *data,
float new_width = floorf (width / downscale_factor); float new_width = floorf (width / downscale_factor);
float new_height = floorf (height / downscale_factor); float new_height = floorf (height / downscale_factor);
if (G_UNLIKELY (new_width < 1.0f))
{
g_warning ("%s: Correcting width from %f to 1", G_STRLOC, new_width);
new_width = 1.0f;
}
if (G_UNLIKELY (new_height < 1.0f))
{
g_warning ("%s: Correcting height from %f to 1", G_STRLOC, new_height);
new_height = 1.0f;
}
data->texture = cogl_texture_2d_new_with_size (ctx, new_width, new_height); data->texture = cogl_texture_2d_new_with_size (ctx, new_width, new_height);
if (!data->texture) if (!data->texture)
return FALSE; return FALSE;