From 267d1793c6ebf1d7b2dd0e4814c19ca7a21515d9 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 19 Sep 2012 22:23:47 +0200 Subject: [PATCH] blur: Fix pixel sizes The code accesses pixels in a chunks of 4 bytes, so we must only support formats where the size of a single pixel is 4 bytes. Fix RGB24 to be 4 bytes (the alpha channel is ignored) and disallow A8. --- gtk/gtkcairoblur.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/gtk/gtkcairoblur.c b/gtk/gtkcairoblur.c index fb08401d04..7748431ec3 100644 --- a/gtk/gtkcairoblur.c +++ b/gtk/gtkcairoblur.c @@ -227,8 +227,7 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface, g_return_if_fail (cairo_surface_get_type (surface) == CAIRO_SURFACE_TYPE_IMAGE); format = cairo_image_surface_get_format (surface); - g_return_if_fail (format == CAIRO_FORMAT_A8 || - format == CAIRO_FORMAT_RGB24 || + g_return_if_fail (format == CAIRO_FORMAT_RGB24 || format == CAIRO_FORMAT_ARGB32); if (radius == 0) @@ -248,12 +247,10 @@ _gtk_cairo_blur_surface (cairo_surface_t* surface, _expblur (pixels, width, height, 4, radius, 16, 7); break; case CAIRO_FORMAT_RGB24: - _expblur (pixels, width, height, 3, radius, 16, 7); - break; - case CAIRO_FORMAT_A8: - _expblur (pixels, width, height, 1, radius, 16, 7); + _expblur (pixels, width, height, 4, radius, 16, 7); break; default: + g_assert_not_reached (); break; }