diff options
author | Kimmo Hämäläinen <kimmo.hamalainen@nokia.com> | 2010-11-19 15:19:53 +0200 |
---|---|---|
committer | Adam Endrodi <ext-adam.endrodi@nokia.com> | 2010-12-02 17:46:18 +0200 |
commit | 92849b59f9d1a600a95f2a6987b4aa310a5804a1 (patch) | |
tree | cbacddcdacf7af5946a0e4d83fc29ce59c9cf17c | |
parent | a3026e317aa0052b953f1c8dfd130a2ede047cd2 (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.cpp | 16 |
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(); |