From 0cd8f6ededd14fed8af84c821999c5cf7941b818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Fri, 21 Jan 2011 22:19:40 -0500 Subject: [PATCH] Drive-by optimization of blur_surface() --- clients/cairo-util.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/clients/cairo-util.c b/clients/cairo-util.c index 3aef0af..5aa9857 100644 --- a/clients/cairo-util.c +++ b/clients/cairo-util.c @@ -49,9 +49,11 @@ blur_surface(cairo_surface_t *surface, int margin) dst = malloc(height * stride); half = size / 2; + a = 0; for (i = 0; i < size; i++) { f = (i - half); kernel[i] = exp(- f * f / ARRAY_LENGTH(kernel)) * 10000; + a += kernel[i]; } for (i = 0; i < height; i++) { @@ -67,7 +69,6 @@ blur_surface(cairo_surface_t *surface, int margin) y = 0; z = 0; w = 0; - a = 0; for (k = 0; k < size; k++) { if (j - half + k < 0 || j - half + k >= width) continue; @@ -77,7 +78,6 @@ blur_surface(cairo_surface_t *surface, int margin) y += ((p >> 16) & 0xff) * kernel[k]; z += ((p >> 8) & 0xff) * kernel[k]; w += (p & 0xff) * kernel[k]; - a += kernel[k]; } d[j] = (x / a << 24) | (y / a << 16) | (z / a << 8) | w / a; } @@ -96,7 +96,6 @@ blur_surface(cairo_surface_t *surface, int margin) y = 0; z = 0; w = 0; - a = 0; for (k = 0; k < size; k++) { if (i - half + k < 0 || i - half + k >= height) continue; @@ -107,7 +106,6 @@ blur_surface(cairo_surface_t *surface, int margin) y += ((p >> 16) & 0xff) * kernel[k]; z += ((p >> 8) & 0xff) * kernel[k]; w += (p & 0xff) * kernel[k]; - a += kernel[k]; } d[j] = (x / a << 24) | (y / a << 16) | (z / a << 8) | w / a; }