diff options
author | Danny Baumann <dannybaumann@web.de> | 2007-06-02 17:41:13 +0200 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2007-06-02 17:41:13 +0200 |
commit | 88e7cb16de535c3539eddaeac5b4b770af54c7db (patch) | |
tree | f9ab7ab8d6a27858ace0108254c10bc45319a239 | |
parent | 3b4a895af4139428651ccced02682728b6b68f5b (diff) | |
download | tile-88e7cb16de535c3539eddaeac5b4b770af54c7db.tar.gz tile-88e7cb16de535c3539eddaeac5b4b770af54c7db.tar.bz2 |
Fix tiling animation multihead issues by using the fullscreen output.
-rw-r--r-- | tile.c | 22 |
1 files changed, 21 insertions, 1 deletions
@@ -60,6 +60,7 @@ typedef struct _TileScreen { PaintWindowProc paintWindow; WindowResizeNotifyProc windowResizeNotify; PreparePaintScreenProc preparePaintScreen; + PaintScreenProc paintScreen; DonePaintScreenProc donePaintScreen; PaintOutputProc paintOutput; } TileScreen; @@ -232,6 +233,22 @@ static void tilePreparePaintScreen(CompScreen * s, int msSinceLastPaint) WRAP(ts, s, preparePaintScreen, tilePreparePaintScreen); } +static void tilePaintScreen(CompScreen * s, CompOutput * outputs, + int numOutputs, unsigned int mask) +{ + TILE_SCREEN(s); + + if (ts->grabIndex) + { + outputs = &s->fullscreenOutput; + numOutputs = 1; + } + + UNWRAP(ts, s, paintScreen); + (*s->paintScreen) (s, outputs, numOutputs, mask); + WRAP(ts, s, paintScreen, tilePaintScreen); +} + static void tileDonePaintScreen(CompScreen * s) { TILE_SCREEN(s); @@ -281,7 +298,8 @@ static Bool tilePaintOutput(CompScreen * s, // Check if animation is enabled, there is resizing on screen and only outline should be drawn - if (ts->grabIndex && + if (ts->grabIndex && + (output->id == ~0) && (tileGetAnimateType(s->display) == AnimateTypeFilledOutline)) { CompWindow *w; @@ -500,6 +518,7 @@ static Bool tileInitScreen(CompPlugin * p, CompScreen * s) // Wrap plugin functions WRAP(ts, s, paintOutput, tilePaintOutput); WRAP(ts, s, preparePaintScreen, tilePreparePaintScreen); + WRAP(ts, s, paintScreen, tilePaintScreen); WRAP(ts, s, donePaintScreen, tileDonePaintScreen); WRAP(ts, s, windowResizeNotify, tileResizeNotify); WRAP(ts, s, paintWindow, tilePaintWindow); @@ -516,6 +535,7 @@ static void tileFiniScreen(CompPlugin * p, CompScreen * s) //Restore the original function UNWRAP(ts, s, paintOutput); UNWRAP(ts, s, preparePaintScreen); + UNWRAP(ts, s, paintScreen); UNWRAP(ts, s, donePaintScreen); UNWRAP(ts, s, windowResizeNotify); UNWRAP(ts, s, paintWindow); |