shadow-box: Bail out blur early if radius is 1px
For radius 1px the current implementation rounds down to a 1 px box filter which is a no-op. Rather than creating useless shadow masks in this case we bail out blurring early. Another alternative would be to make radius 1px round up to a 2 px box filter, but that would change the rendering of Adwaita which is probably not a great idea this late in the cycle. https://bugzilla.gnome.org/show_bug.cgi?id=746468
This commit is contained in:
parent
d0dc1f52cc
commit
9c2a16fb3b
@ -215,7 +215,9 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface,
|
||||
g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE);
|
||||
g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8);
|
||||
|
||||
if (radius == 0)
|
||||
/* The code doesn't actually do any blurring for radius 1, as it
|
||||
* ends up with box filter size 1 */
|
||||
if (radius <= 1)
|
||||
return;
|
||||
|
||||
/* Before we mess with the surface, execute any pending drawing. */
|
||||
|
@ -297,7 +297,10 @@ static gboolean
|
||||
needs_blur (const GtkCssValue *shadow)
|
||||
{
|
||||
double radius = _gtk_css_number_value_get (shadow->radius, 0);
|
||||
if (radius == 0.0)
|
||||
|
||||
/* The code doesn't actually do any blurring for radius 1, as it
|
||||
* ends up with box filter size 1 */
|
||||
if (radius <= 1.0)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
|
Loading…
Reference in New Issue
Block a user