summaryrefslogtreecommitdiffstats
path: root/src/platformsupport
diff options
context:
space:
mode:
authorGirish Ramakrishnan <girish.1.ramakrishnan@nokia.com>2012-07-06 04:14:37 +0530
committerQt by Nokia <qt-info@nokia.com>2012-07-11 12:43:51 +0200
commit0be40737081110238f326e3644287b3dca18a824 (patch)
treeee4126debb15bac92eced020690fdb6317ce489c /src/platformsupport
parent4f5a9c8791588abdd6c7c0f94cbaeea1c65d8130 (diff)
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 <gunnar.sletta@nokia.com> Reviewed-by: Thomas Senyk <thomas.senyk@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
Diffstat (limited to 'src/platformsupport')
-rw-r--r--src/platformsupport/fbconvenience/qfbscreen.cpp2
-rw-r--r--src/platformsupport/fbconvenience/qfbwindow.cpp93
-rw-r--r--src/platformsupport/fbconvenience/qfbwindow_p.h3
3 files changed, 33 insertions, 65 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,21 +42,34 @@
#include "qfbwindow_p.h"
#include "qfbscreen_p.h"
+#include <QtGui/QScreen>
+
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<QFbScreen *>(window()->screen()->handle());
+}
+
void QFbWindow::setGeometry(const QRect &rect)
{
-// store previous geometry for screen update
+ // store previous geometry for screen update
oldGeometry = geometry();
-
- QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::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<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::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<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::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<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
- while (i != end) {
- (*i)->removeWindow(this);
- ++i;
- }
-}
-
void QFbWindow::raise()
{
- QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
- while (i != end) {
- (*i)->raise(this);
- ++i;
- }
+ platformScreen()->raise(this);
}
void QFbWindow::lower()
{
- QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::const_iterator end = mScreens.constEnd();
- while (i != end) {
- (*i)->lower(this);
- ++i;
- }
+ platformScreen()->lower(this);
}
void QFbWindow::repaint(const QRegion &region)
@@ -136,20 +112,13 @@ void QFbWindow::repaint(const QRegion &region)
currentGeometry.top() + dirtyClient.top(),
dirtyClient.width(),
dirtyClient.height());
- QList<QFbScreen *>::const_iterator i = mScreens.constBegin();
- QList<QFbScreen *>::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<QFbScreen *> mScreens;
QRect oldGeometry;
bool visibleFlag;
Qt::WindowFlags flags;