summaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2011-01-21 22:19:40 -0500
committerKristian Høgsberg <krh@bitplanet.net>2011-01-21 22:19:40 -0500
commit0cd8f6ededd14fed8af84c821999c5cf7941b818 (patch)
tree8b654f9989928d87c747bf9bc01d44eef7b8769c /clients
parenta495333d4fe36b3f983fc90bf9a0f9d53363b211 (diff)
Drive-by optimization of blur_surface()
Diffstat (limited to 'clients')
-rw-r--r--clients/cairo-util.c6
1 files 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;
}