rsvg_filter_primitive_gaussian_blur_render (RsvgFilterPrimitive * self, RsvgFilterContext * ctx)
{
    RsvgFilterPrimitiveGaussianBlur *upself;

    GdkPixbuf *output;
    GdkPixbuf *in;
    RsvgIRect boundarys;
    gfloat sdx, sdy;
    RsvgFilterPrimitiveOutput op;

    upself = (RsvgFilterPrimitiveGaussianBlur *) self;
    boundarys = rsvg_filter_primitive_get_bounds (self, ctx);

    op = rsvg_filter_get_result (self->in, ctx);
    in = op.result;

    output = _rsvg_pixbuf_new_cleared (GDK_COLORSPACE_RGB, 1, 8,
                                       gdk_pixbuf_get_width (in), gdk_pixbuf_get_height (in));

    /* scale the SD values */
    sdx = upself->sdx * ctx->paffine[0];
    sdy = upself->sdy * ctx->paffine[3];

    fast_blur (in, output, sdx, sdy, boundarys, op);

    op.result = output;
    op.bounds = boundarys;
    rsvg_filter_store_output (self->result, op, ctx);

    g_object_unref (in);
    g_object_unref (output);
}
rsvg_filter_primitive_gaussian_blur_render (RsvgFilterPrimitive * self, RsvgFilterContext * ctx)
{
    RsvgFilterPrimitiveGaussianBlur *upself;

    GdkPixbuf *output;
    GdkPixbuf *in;
    RsvgIRect boundarys;
    gfloat sdx, sdy;
    RsvgFilterPrimitiveOutput op;

    upself = (RsvgFilterPrimitiveGaussianBlur *) self;
    boundarys = rsvg_filter_primitive_get_bounds (self, ctx);

    op = rsvg_filter_get_result (self->in, ctx);
    in = op.result;

    output = _rsvg_pixbuf_new_cleared (GDK_COLORSPACE_RGB, 1, 8,
                                       gdk_pixbuf_get_width (in), gdk_pixbuf_get_height (in));

     
    sdx = upself->sdx * ctx->paffine[0];
    sdy = upself->sdy * ctx->paffine[3];

    fast_blur (in, output, sdx, sdy, boundarys, op);

    op.result = output;
    op.bounds = boundarys;
    rsvg_filter_store_output (self->result, op, ctx);

    g_object_unref (in);
    g_object_unref (output);
}