summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/fbconvenience/qfbscreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/platformsupport/fbconvenience/qfbscreen.cpp')
-rw-r--r--src/platformsupport/fbconvenience/qfbscreen.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp
index 6427b62972..e5b9f09c14 100644
--- a/src/platformsupport/fbconvenience/qfbscreen.cpp
+++ b/src/platformsupport/fbconvenience/qfbscreen.cpp
@@ -71,6 +71,19 @@ void QFbScreen::initializeCompositor()
void QFbScreen::addWindow(QFbWindow *window)
{
mWindowStack.prepend(window);
+ if (!mBackingStores.isEmpty()) {
+ //check if we have a backing store for this window
+ for (int i = 0; i < mBackingStores.size(); ++i) {
+ QFbBackingStore *bs = mBackingStores.at(i);
+ // this gets called during QWindow::create() at a point where the
+ // invariant (window->handle()->window() == window) is broken
+ if (bs->window() == window->window()) {
+ window->setBackingStore(bs);
+ mBackingStores.removeAt(i);
+ break;
+ }
+ }
+ }
invalidateRectCache();
setDirty(window->geometry());
QWindow *w = topWindow();