summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2008-02-12 13:56:13 +0100
committerDanny Baumann <dannybaumann@web.de>2008-02-12 13:56:13 +0100
commit249a9e41bbcbc568fb6bcdf42c73befab9032205 (patch)
tree3d9384dab4ede48612dd2c8c09c24ddebe558eb1
parentf7f30123a6286959e87cd941d9d5d58e09b56f44 (diff)
downloadshelf-249a9e41bbcbc568fb6bcdf42c73befab9032205.tar.gz
shelf-249a9e41bbcbc568fb6bcdf42c73befab9032205.tar.bz2
Wrap into paint output and properly flag transformed windows.
-rw-r--r--shelf.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/shelf.c b/shelf.c
index e7a8067..87fbfb0 100644
--- a/shelf.c
+++ b/shelf.c
@@ -73,7 +73,8 @@ typedef struct {
ShelfedWindowInfo *shelfedWindows;
- PaintWindowProc paintWindow;
+ PaintWindowProc paintWindow;
+ PaintOutputProc paintOutput;
DamageWindowRectProc damageWindowRect;
PreparePaintScreenProc preparePaintScreen;
WindowMoveNotifyProc windowMoveNotify;
@@ -786,6 +787,28 @@ shelfPaintWindow (CompWindow *w,
return status;
}
+static Bool
+shelfPaintOutput (CompScreen *s,
+ const ScreenPaintAttrib *sAttrib,
+ const CompTransform *transform,
+ Region region,
+ CompOutput *output,
+ unsigned int mask)
+{
+ Bool status;
+
+ SHELF_SCREEN (s);
+
+ if (ss->shelfedWindows)
+ mask |= PAINT_SCREEN_WITH_TRANSFORMED_WINDOWS_MASK;
+
+ UNWRAP (ss, s, paintOutput);
+ status = (*s->paintOutput) (s, sAttrib, transform, region, output, mask);
+ WRAP (ss, s, paintOutput, shelfPaintOutput);
+
+ return status;
+}
+
static void
shelfWindowMoveNotify (CompWindow *w,
int dx,
@@ -834,6 +857,7 @@ shelfInitScreen (CompPlugin *p,
WRAP (ss, s, preparePaintScreen, shelfPreparePaintScreen);
WRAP (ss, s, paintWindow, shelfPaintWindow);
+ WRAP (ss, s, paintOutput, shelfPaintOutput);
WRAP (ss, s, damageWindowRect, shelfDamageWindowRect);
WRAP (ss, s, windowMoveNotify, shelfWindowMoveNotify);
@@ -850,6 +874,7 @@ shelfFiniScreen (CompPlugin *p,
UNWRAP (ss, s, preparePaintScreen);
UNWRAP (ss, s, paintWindow);
+ UNWRAP (ss, s, paintOutput);
UNWRAP (ss, s, damageWindowRect);
UNWRAP (ss, s, windowMoveNotify);