… | |
… | |
32 | |
32 | |
33 | #ifndef FilterConvolution |
33 | #ifndef FilterConvolution |
34 | #define FilterConvolution "convolution" |
34 | #define FilterConvolution "convolution" |
35 | #endif |
35 | #endif |
36 | |
36 | |
|
|
37 | #ifndef RepeatPad |
|
|
38 | #define RepeatPad True |
|
|
39 | #endif |
|
|
40 | |
37 | #ifdef HAVE_BG_PIXMAP |
41 | #ifdef HAVE_BG_PIXMAP |
38 | # if XRENDER |
42 | # if XRENDER |
39 | static Picture |
43 | static Picture |
40 | create_xrender_mask (Display *dpy, Drawable drawable, Bool argb, Bool component_alpha) |
44 | create_xrender_mask (Display *dpy, Drawable drawable, Bool argb, Bool component_alpha) |
41 | { |
45 | { |
… | |
… | |
1055 | |
1059 | |
1056 | int size = max (h_blurRadius, v_blurRadius) * 2 + 1; |
1060 | int size = max (h_blurRadius, v_blurRadius) * 2 + 1; |
1057 | double *kernel = (double *)malloc (size * sizeof (double)); |
1061 | double *kernel = (double *)malloc (size * sizeof (double)); |
1058 | XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed)); |
1062 | XFixed *params = (XFixed *)malloc ((size + 2) * sizeof (XFixed)); |
1059 | |
1063 | |
|
|
1064 | XRenderPictureAttributes pa; |
1060 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1065 | XRenderPictFormat *format = XRenderFindVisualFormat (dpy, visual); |
1061 | |
1066 | |
|
|
1067 | pa.repeat = RepeatPad; |
1062 | Picture src = XRenderCreatePicture (dpy, pixmap, format, 0, 0); |
1068 | Picture src = XRenderCreatePicture (dpy, pixmap, format, CPRepeat, &pa); |
1063 | Picture dst = XRenderCreatePicture (dpy, pixmap, format, 0, 0); |
1069 | Picture dst = XRenderCreatePicture (dpy, pixmap, format, CPRepeat, &pa); |
1064 | |
1070 | |
1065 | if (kernel && params) |
1071 | if (kernel && params) |
1066 | { |
1072 | { |
1067 | size = h_blurRadius * 2 + 1; |
1073 | size = h_blurRadius * 2 + 1; |
1068 | get_gaussian_kernel (h_blurRadius, size, kernel, params); |
1074 | get_gaussian_kernel (h_blurRadius, size, kernel, params); |