diff options
Diffstat (limited to 'src/platformsupport/fbconvenience/qfbscreen.cpp')
-rw-r--r-- | src/platformsupport/fbconvenience/qfbscreen.cpp | 13 |
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(); |