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_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE);
|
||||||
g_return_if_fail (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_A8);
|
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;
|
return;
|
||||||
|
|
||||||
/* Before we mess with the surface, execute any pending drawing. */
|
/* Before we mess with the surface, execute any pending drawing. */
|
||||||
|
@ -297,7 +297,10 @@ static gboolean
|
|||||||
needs_blur (const GtkCssValue *shadow)
|
needs_blur (const GtkCssValue *shadow)
|
||||||
{
|
{
|
||||||
double radius = _gtk_css_number_value_get (shadow->radius, 0);
|
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 FALSE;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user