From 0be40737081110238f326e3644287b3dca18a824 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Fri, 6 Jul 2012 04:14:37 +0530 Subject: 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 --- src/platformsupport/fbconvenience/qfbscreen.cpp | 2 - src/platformsupport/fbconvenience/qfbwindow.cpp | 93 +++++++++---------------- src/platformsupport/fbconvenience/qfbwindow_p.h | 3 +- 3 files changed, 33 insertions(+), 65 deletions(-) (limited to 'src') 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,21 +42,34 @@ #include "qfbwindow_p.h" #include "qfbscreen_p.h" +#include + QT_BEGIN_NAMESPACE +QFbWindow::QFbWindow(QWindow *window) + : QPlatformWindow(window), mBackingStore(0), visibleFlag(false) +{ + static QAtomicInt winIdGenerator(1); + windowId = winIdGenerator.fetchAndAddRelaxed(1); +} + +QFbWindow::~QFbWindow() +{ + 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 + // 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); + platformScreen()->invalidateRectCache(); + //### QWindowSystemInterface::handleGeometryChange(window(), rect); QPlatformWindow::setGeometry(rect); } @@ -64,24 +77,14 @@ void QFbWindow::setGeometry(const QRect &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; - } + platformScreen()->invalidateRectCache(); + platformScreen()->setDirty(geometry()); } 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; - } + platformScreen()->invalidateRectCache(); return flags; } @@ -90,41 +93,14 @@ Qt::WindowFlags QFbWindow::windowFlags() const return flags; } -QFbWindow::QFbWindow(QWindow *window) - : QPlatformWindow(window), mBackingStore(0), visibleFlag(false) -{ - static QAtomicInt winIdGenerator(1); - windowId = winIdGenerator.fetchAndAddRelaxed(1); -} - -QFbWindow::~QFbWindow() -{ - QList::const_iterator i = mScreens.constBegin(); - QList::const_iterator end = mScreens.constEnd(); - while (i != end) { - (*i)->removeWindow(this); - ++i; - } -} - 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; -- cgit v1.2.3