summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-05-24 18:41:54 +0300
committerKimmo Hämäläinen <kimmo.hamalainen@nokia.com>2010-05-24 18:41:54 +0300
commiteff05f6440e4d7f8c599ebf5de7c504a1bec292b (patch)
treef824c4125a2606d427c86e8b105fbed0d911d19c
parentfd25edb8bc4610d8e5bbcaec75428960cb02cc13 (diff)
Fixes: NB#170360
New: Changes: - in mapEvent(), do not call saveBackingStore() before redirecting the window (avoids some EGL errors) - in mapEvent(), use possiblyUnredirectTopmostWindow() instead of disableCompositing() to make it work when we have decorated fullscreen window and we want to show status menu, for example - in mapRequestEvent(): handle the case when decorator restarts during a call and we have decorated fullscreen window RevBy: Details:
-rw-r--r--src/mcompositemanager.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/mcompositemanager.cpp b/src/mcompositemanager.cpp
index 50c98ab..31f9f70 100644
--- a/src/mcompositemanager.cpp
+++ b/src/mcompositemanager.cpp
@@ -1093,9 +1093,13 @@ void MCompositeManagerPrivate::mapRequestEvent(XMapRequestEvent *e)
Window w = getTopmostApp();
MCompositeWindow *cw;
if (w && (cw = COMPOSITE_WINDOW(w))) {
- if (cw->needDecoration())
- MDecoratorFrame::instance()->setManagedWindow(cw);
- else if (cw->status() == MCompositeWindow::HUNG)
+ if (cw->needDecoration()) {
+ if (FULLSCREEN_WINDOW(cw) && device_state->ongoingCall()) {
+ MDecoratorFrame::instance()->setManagedWindow(cw, true);
+ MDecoratorFrame::instance()->setOnlyStatusbar(true);
+ } else
+ MDecoratorFrame::instance()->setManagedWindow(cw);
+ } else if (cw->status() == MCompositeWindow::HUNG)
MDecoratorFrame::instance()->setManagedWindow(cw, true);
}
return;
@@ -1531,15 +1535,18 @@ void MCompositeManagerPrivate::mapEvent(XMapEvent *e)
item->setWindowTypeAtom(ATOM(_NET_WM_WINDOW_TYPE_NORMAL));
else
item->setWindowTypeAtom(atom->getType(win));
- item->saveBackingStore(true);
if (!device_state->displayOff() && !item->hasAlpha()
&& !item->needDecoration()) {
item->setVisible(true);
item->updateWindowPixmap();
- disableCompositing();
+ // disableCompositing() does not work here because it ignores
+ // stacking order in its check for decorator
+ if (!possiblyUnredirectTopmostWindow())
+ enableCompositing(true);
} else if (!device_state->displayOff()) {
((MTexturePixmapItem *)item)->enableRedirectedRendering();
item->delayShow(100);
+ item->saveBackingStore(true);
}
/* do this after bindWindow() so that the window is in stacking_list */
activateWindow(win, CurrentTime, false);