summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--static.c23
-rw-r--r--static.xml.in3
2 files changed, 26 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);
diff --git a/static.xml.in b/static.xml.in
index d8f3ba9..b5c9aa8 100644
--- a/static.xml.in
+++ b/static.xml.in
@@ -5,6 +5,9 @@
<_long>Keep windows such as dock or panels static</_long>
<category>Desktop</category>
<deps>
+ <relation type="after">
+ <plugin>3d</plugin>
+ </relation>
<relation type="before">
<plugin>expo</plugin>
<plugin>zoom</plugin>