From 3acd8d9aa463ffcc7d63d5262c0a66577c38f556 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 16 Feb 2015 16:26:15 +0100 Subject: Support grabWindow() in linuxfb Task-number: QTBUG-44465 Change-Id: Id4b0fcbcce3e005c1f147fa227ef987daac20fd5 Reviewed-by: Andy Nichols --- src/platformsupport/fbconvenience/qfbscreen.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/platformsupport/fbconvenience/qfbscreen.cpp') diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index 04aa9f2fae..566f84c9ea 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -74,15 +74,15 @@ bool QFbScreen::event(QEvent *event) void QFbScreen::addWindow(QFbWindow *window) { mWindowStack.prepend(window); - if (!mBackingStores.isEmpty()) { + if (!mPendingBackingStores.isEmpty()) { //check if we have a backing store for this window - for (int i = 0; i < mBackingStores.size(); ++i) { - QFbBackingStore *bs = mBackingStores.at(i); + for (int i = 0; i < mPendingBackingStores.size(); ++i) { + QFbBackingStore *bs = mPendingBackingStores.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); + mPendingBackingStores.removeAt(i); break; } } @@ -295,5 +295,14 @@ QRegion QFbScreen::doRedraw() return touchedRegion; } +QFbWindow *QFbScreen::windowForId(WId wid) const +{ + for (int i = 0; i < mWindowStack.count(); ++i) + if (mWindowStack[i]->winId() == wid) + return mWindowStack[i]; + + return 0; +} + QT_END_NAMESPACE -- cgit v1.2.3