summaryrefslogtreecommitdiff
path: root/static.c
diff options
context:
space:
mode:
Diffstat (limited to 'static.c')
-rw-r--r--static.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/static.c b/static.c
index b02dc47..0275438 100644
--- a/static.c
+++ b/static.c
@@ -44,6 +44,7 @@ typedef struct _StaticScreen
{
PaintWindowProc paintWindow;
PaintOutputProc paintOutput;
+ ApplyScreenTransformProc applyScreenTransform;
PaintTransformedOutputProc paintTransformedOutput;
PreparePaintScreenProc preparePaintScreen;
@@ -103,6 +104,26 @@ staticPaintTransformedOutput (CompScreen *s,
WRAP (ss, s, paintTransformedOutput, staticPaintTransformedOutput);
}
+static void
+staticApplyScreenTransform (CompScreen *s,
+ const ScreenPaintAttrib *sAttrib,
+ CompOutput *output,
+ CompTransform *transform)
+{
+ STATIC_SCREEN(s);
+
+ if (ss->staticMode == STATIC_STATIC)
+ {
+ applyScreenTransform (s, sAttrib, output, transform);
+ }
+ else
+ {
+ UNWRAP (ss, s, applyScreenTransform);
+ (*s->applyScreenTransform) (s, sAttrib, output, transform);
+ WRAP (ss, s, applyScreenTransform, staticApplyScreenTransform);
+ }
+}
+
static Bool
staticPaintOutput(CompScreen *s,
const ScreenPaintAttrib *sAttrib,
@@ -190,6 +211,7 @@ staticInitScreen (CompPlugin *p,
WRAP (ss, s, paintWindow, staticPaintWindow);
WRAP (ss, s, paintOutput, staticPaintOutput);
+ WRAP (ss, s, applyScreenTransform, staticApplyScreenTransform);
WRAP (ss, s, paintTransformedOutput, staticPaintTransformedOutput);
WRAP (ss, s, preparePaintScreen, staticPreparePaintScreen);
@@ -206,6 +228,7 @@ staticFiniScreen (CompPlugin *p,
UNWRAP (ss, s, preparePaintScreen);
UNWRAP (ss, s, paintTransformedOutput);
+ UNWRAP (ss, s, applyScreenTransform);
UNWRAP (ss, s, paintOutput);
UNWRAP (ss, s, paintWindow);