summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-11-19 15:19:53 +0200
committerAdam Endrodi <ext-adam.endrodi@nokia.com>2010-12-02 17:46:18 +0200
commit92849b59f9d1a600a95f2a6987b4aa310a5804a1 (patch)
treecbacddcdacf7af5946a0e4d83fc29ce59c9cf17c
parenta3026e317aa0052b953f1c8dfd130a2ede047cd2 (diff)
Fixes: NB#202713 - New implementation for fullscreen switching
- overlay shape changes are done before direct rendering windows to avoid extra copy in X server side - don't direct render unmapped windows -- damage code does not need it anymore
-rw-r--r--src/mcompositemanager.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp
index 1185f39..b9490b4 100644
--- a/src/mcompositemanager.cpp
+++ b/src/mcompositemanager.cpp
@@ -1146,6 +1146,10 @@ bool MCompositeManagerPrivate::possiblyUnredirectTopmostWindow()
}
if (top && cw && !MCompositeWindow::hasTransitioningWindow()) {
+ if (compositing) {
+ showOverlayWindow(false);
+ compositing = false;
+ }
// unredirect the chosen window and any docks and OR windows above it
// TODO: what else should be unredirected?
if (!((MTexturePixmapItem *)cw)->isDirectRendered()) {
@@ -1164,10 +1168,6 @@ bool MCompositeManagerPrivate::possiblyUnredirectTopmostWindow()
}
}
}
- if (compositing) {
- showOverlayWindow(false);
- compositing = false;
- }
ret = true;
}
return ret;
@@ -1211,10 +1211,6 @@ void MCompositeManagerPrivate::unmapEvent(XUnmapEvent *e)
setWindowState(e->window, WithdrawnState);
if (item->isVisible() && !item->isClosing())
item->setVisible(false);
- if (!item->isClosing())
- // mark it direct-rendered so we create damage object etc.
- // in case it is re-mapped
- ((MTexturePixmapItem *)item)->enableDirectFbRendering();
if (MDecoratorFrame::instance()->managedWindow() == e->window) {
// decorate next window in the stack if any
@@ -3450,6 +3446,8 @@ void MCompositeManagerPrivate::disableCompositing(ForcingLevel forced)
return;
}
+ showOverlayWindow(false);
+
for (QHash<Window, MCompositeWindow *>::iterator it = windows.begin();
it != windows.end(); ++it) {
MCompositeWindow *tp = it.value();
@@ -3460,8 +3458,6 @@ void MCompositeManagerPrivate::disableCompositing(ForcingLevel forced)
setWindowDebugProperties(it.key());
}
- showOverlayWindow(false);
-
if (MDecoratorFrame::instance()->decoratorItem())
MDecoratorFrame::instance()->lower();