From 0be40737081110238f326e3644287b3dca18a824 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Fri, 6 Jul 2012 04:14:37 +0530 Subject: [PATCH] linuxfb: remove mScreens from QFbWindow A QWindow can only be in one QScreen, so it makes no sense to track a list of screens. Change-Id: I341a67afa90c7fbbbd95786b43d0a322fc1ddba2 Reviewed-by: Gunnar Sletta Reviewed-by: Thomas Senyk Reviewed-by: Girish Ramakrishnan --- .../fbconvenience/qfbscreen.cpp | 2 - .../fbconvenience/qfbwindow.cpp | 119 +++++++----------- .../fbconvenience/qfbwindow_p.h | 3 +- 3 files changed, 46 insertions(+), 78 deletions(-) diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index 6656903d71..cd45e5ce08 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -252,7 +252,6 @@ QRegion QFbScreen::doRedraw() void QFbScreen::addWindow(QFbWindow *surface) { windowStack.prepend(surface); - surface->mScreens.append(this); invalidateRectCache(); setDirty(surface->geometry()); } @@ -260,7 +259,6 @@ void QFbScreen::addWindow(QFbWindow *surface) void QFbScreen::removeWindow(QFbWindow * surface) { windowStack.removeOne(surface); - surface->mScreens.removeOne(this); invalidateRectCache(); setDirty(surface->geometry()); } diff --git a/src/platformsupport/fbconvenience/qfbwindow.cpp b/src/platformsupport/fbconvenience/qfbwindow.cpp index f83f084363..da7c881d94 100644 --- a/src/platformsupport/fbconvenience/qfbwindow.cpp +++ b/src/platformsupport/fbconvenience/qfbwindow.cpp @@ -42,54 +42,10 @@ #include "qfbwindow_p.h" #include "qfbscreen_p.h" +#include + QT_BEGIN_NAMESPACE -void QFbWindow::setGeometry(const QRect &rect) -{ -// store previous geometry for screen update - oldGeometry = geometry(); - - - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->invalidateRectCache(); - ++i; - } -//### QWindowSystemInterface::handleGeometryChange(window(), rect); - - QPlatformWindow::setGeometry(rect); -} - -void QFbWindow::setVisible(bool visible) -{ - visibleFlag = visible; - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->invalidateRectCache(); - (*i)->setDirty(geometry()); - ++i; - } -} - -Qt::WindowFlags QFbWindow::setWindowFlags(Qt::WindowFlags type) -{ - flags = type; - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->invalidateRectCache(); - ++i; - } - return flags; -} - -Qt::WindowFlags QFbWindow::windowFlags() const -{ - return flags; -} - QFbWindow::QFbWindow(QWindow *window) : QPlatformWindow(window), mBackingStore(0), visibleFlag(false) { @@ -99,32 +55,52 @@ QFbWindow::QFbWindow(QWindow *window) QFbWindow::~QFbWindow() { - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->removeWindow(this); - ++i; - } + platformScreen()->removeWindow(this); +} + +QFbScreen *QFbWindow::platformScreen() const +{ + return static_cast(window()->screen()->handle()); +} + +void QFbWindow::setGeometry(const QRect &rect) +{ + // store previous geometry for screen update + oldGeometry = geometry(); + + platformScreen()->invalidateRectCache(); + //### QWindowSystemInterface::handleGeometryChange(window(), rect); + + QPlatformWindow::setGeometry(rect); +} + +void QFbWindow::setVisible(bool visible) +{ + visibleFlag = visible; + platformScreen()->invalidateRectCache(); + platformScreen()->setDirty(geometry()); +} + +Qt::WindowFlags QFbWindow::setWindowFlags(Qt::WindowFlags type) +{ + flags = type; + platformScreen()->invalidateRectCache(); + return flags; +} + +Qt::WindowFlags QFbWindow::windowFlags() const +{ + return flags; } void QFbWindow::raise() { - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->raise(this); - ++i; - } + platformScreen()->raise(this); } void QFbWindow::lower() { - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->lower(this); - ++i; - } + platformScreen()->lower(this); } void QFbWindow::repaint(const QRegion ®ion) @@ -136,20 +112,13 @@ void QFbWindow::repaint(const QRegion ®ion) currentGeometry.top() + dirtyClient.top(), dirtyClient.width(), dirtyClient.height()); - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); QRect oldGeometryLocal = oldGeometry; oldGeometry = currentGeometry; - while (i != end) { - // If this is a move, redraw the previous location - if (oldGeometryLocal != currentGeometry) { - (*i)->setDirty(oldGeometryLocal); - } - (*i)->setDirty(dirtyRegion); - ++i; - } + // If this is a move, redraw the previous location + if (oldGeometryLocal != currentGeometry) + platformScreen()->setDirty(oldGeometryLocal); + platformScreen()->setDirty(dirtyRegion); } - QT_END_NAMESPACE diff --git a/src/platformsupport/fbconvenience/qfbwindow_p.h b/src/platformsupport/fbconvenience/qfbwindow_p.h index 9f3b2bb447..5bd68f0554 100644 --- a/src/platformsupport/fbconvenience/qfbwindow_p.h +++ b/src/platformsupport/fbconvenience/qfbwindow_p.h @@ -71,13 +71,14 @@ public: void setBackingStore(QFbBackingStore *store) { mBackingStore = store; } QFbBackingStore *backingStore() const { return mBackingStore; } + QFbScreen *platformScreen() const; + virtual void repaint(const QRegion&); protected: friend class QFbScreen; QFbBackingStore *mBackingStore; - QList mScreens; QRect oldGeometry; bool visibleFlag; Qt::WindowFlags flags;