rendered paste bodydiff --git a/scalefilter.c b/scalefilter.c
index abde14e..41bda2b 100644
--- a/scalefilter.c
+++ b/scalefilter.c
@@ -70,7 +70,8 @@ typedef struct _ScaleFilterDisplay {
typedef struct _ScaleFilterScreen {
PaintOutputProc paintOutput;
- DrawWindowProc drawWindow;
+ DrawWindowProc drawWindow;
+ PaintWindowProc paintWindow;
CompMatch scaleMatch;
Bool matchApplied;
@@ -721,6 +722,34 @@ scalefilterPaintOutput (CompScreen *s,
}
static Bool
+scalefilterPaintWindow (CompWindow * w,
+ const WindowPaintAttrib * attrib,
+ const CompTransform * transform,
+ Region region, unsigned int mask)
+{
+ CompScreen *s = w->screen;
+ Bool status;
+
+ FILTER_SCREEN (s);
+
+ if (fs->matchApplied ||
+ (fs->filterInfo && fs->filterInfo->filterStringLength))
+ {
+ SCALE_WINDOW (w);
+
+ if (!sw->slot)
+ mask |= PAINT_WINDOW_TRANSLUCENT_MASK;
+ }
+
+ UNWRAP (fs, s, paintWindow);
+ status = (*s->paintWindow) (w, attrib, transform, region, mask);
+ WRAP (fs, s, paintWindow, scalefilterPaintWindow);
+
+ return status;
+}
+
+
+static Bool
scalefilterDrawWindow (CompWindow *w,
const CompTransform *transform,
const FragmentAttrib *attrib,
@@ -855,6 +884,7 @@ scalefilterInitScreen (CompPlugin *p,
WRAP (fs, s, paintOutput, scalefilterPaintOutput);
WRAP (fs, s, drawWindow, scalefilterDrawWindow);
+ WRAP (fs, s, paintWindow, scalefilterPaintWindow);
scalefilterSetFontBoldNotify (s, scalefilterScreenOptionChanged);
scalefilterSetFontSizeNotify (s, scalefilterScreenOptionChanged);
@@ -875,6 +905,7 @@ scalefilterFiniScreen (CompPlugin *p,
UNWRAP (fs, s, paintOutput);
UNWRAP (fs, s, drawWindow);
+ UNWRAP (fs, s, paintWindow);
if (fs->filterInfo)
{