diff options
author | Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> | 2012-07-05 21:06:14 +0530 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-11 12:42:52 +0200 |
commit | c452418e9f09d7bd22b8c32d885a533aa93ffca3 (patch) | |
tree | 5f30a4ad9e8ec9dabcfaac77a0bd5b37b8ef649e /src/platformsupport/fbconvenience | |
parent | 569ea8c365b927c621ef590874352d355b840fd7 (diff) |
linuxfb: don't store window in backingstore
The backing store already knows about the window.
Also, rename surface to backing store in QFbWindow.
Change-Id: I3701b3cdbdc228200da9b93b13037655dc436f53
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/fbconvenience')
5 files changed, 16 insertions, 17 deletions
diff --git a/src/platformsupport/fbconvenience/qfbbackingstore.cpp b/src/platformsupport/fbconvenience/qfbbackingstore.cpp index e7d2bc8023..80ba4031ec 100644 --- a/src/platformsupport/fbconvenience/qfbbackingstore.cpp +++ b/src/platformsupport/fbconvenience/qfbbackingstore.cpp @@ -44,17 +44,15 @@ #include "qfbscreen_p.h" #include <qpa/qplatformwindow.h> +#include <QtGui/qscreen.h> QT_BEGIN_NAMESPACE -QFbBackingStore::QFbBackingStore(QFbScreen *screen, QWindow *window) - : QPlatformBackingStore(window), - mScreen(screen) +QFbBackingStore::QFbBackingStore(QWindow *window) + : QPlatformBackingStore(window) { - mImage = QImage(window->size(), mScreen->format()); - - platformWindow = static_cast<QFbWindow*>(window->handle()); - platformWindow->surface = this; + mImage = QImage(window->size(), window->screen()->handle()->format()); + (static_cast<QFbWindow *>(window->handle()))->setBackingStore(this); } QFbBackingStore::~QFbBackingStore() @@ -66,7 +64,7 @@ void QFbBackingStore::flush(QWindow *window, const QRegion ®ion, const QPoint Q_UNUSED(window); Q_UNUSED(offset); - platformWindow->repaint(region); + (static_cast<QFbWindow *>(window->handle()))->repaint(region); } void QFbBackingStore::resize(const QSize &size, const QRegion ®ion) @@ -74,7 +72,7 @@ void QFbBackingStore::resize(const QSize &size, const QRegion ®ion) Q_UNUSED(region); // change the widget's QImage if this is a resize if (mImage.size() != size) - mImage = QImage(size, mScreen->format()); + mImage = QImage(size, window()->screen()->handle()->format()); // QPlatformBackingStore::resize(size); } diff --git a/src/platformsupport/fbconvenience/qfbbackingstore_p.h b/src/platformsupport/fbconvenience/qfbbackingstore_p.h index 52a154bd33..a01e35641c 100644 --- a/src/platformsupport/fbconvenience/qfbbackingstore_p.h +++ b/src/platformsupport/fbconvenience/qfbbackingstore_p.h @@ -53,7 +53,7 @@ class QWindow; class QFbBackingStore : public QPlatformBackingStore { public: - QFbBackingStore(QFbScreen *screen, QWindow *window); + QFbBackingStore(QWindow *window); ~QFbBackingStore(); virtual QPaintDevice *paintDevice() { return &mImage; } @@ -63,14 +63,13 @@ public: virtual void beginPaint(const QRegion ®ion); virtual void endPaint(const QRegion ®ion); + virtual void resize(const QSize &size, const QRegion ®ion); + const QImage image() { return mImage; } - void resize(const QSize &size, const QRegion ®ion); protected: friend class QFbWindow; - QFbWindow *platformWindow; - QFbScreen *mScreen; QImage mImage; }; diff --git a/src/platformsupport/fbconvenience/qfbscreen.cpp b/src/platformsupport/fbconvenience/qfbscreen.cpp index 843300d5c5..6656903d71 100644 --- a/src/platformsupport/fbconvenience/qfbscreen.cpp +++ b/src/platformsupport/fbconvenience/qfbscreen.cpp @@ -223,7 +223,7 @@ QRegion QFbScreen::doRedraw() QRect windowRect = windowStack[layerIndex]->geometry().translated(-screenOffset); QRect windowIntersect = rect.translated(-windowRect.left(), -windowRect.top()); - compositePainter->drawImage(rect, windowStack[layerIndex]->surface->image(), + compositePainter->drawImage(rect, windowStack[layerIndex]->backingStore()->image(), windowIntersect); if (firstLayer) { firstLayer = false; diff --git a/src/platformsupport/fbconvenience/qfbwindow.cpp b/src/platformsupport/fbconvenience/qfbwindow.cpp index 4729f9d548..f83f084363 100644 --- a/src/platformsupport/fbconvenience/qfbwindow.cpp +++ b/src/platformsupport/fbconvenience/qfbwindow.cpp @@ -91,7 +91,7 @@ Qt::WindowFlags QFbWindow::windowFlags() const } QFbWindow::QFbWindow(QWindow *window) - : QPlatformWindow(window), visibleFlag(false) + : QPlatformWindow(window), mBackingStore(0), visibleFlag(false) { static QAtomicInt winIdGenerator(1); windowId = winIdGenerator.fetchAndAddRelaxed(1); diff --git a/src/platformsupport/fbconvenience/qfbwindow_p.h b/src/platformsupport/fbconvenience/qfbwindow_p.h index 81b66348cc..9f3b2bb447 100644 --- a/src/platformsupport/fbconvenience/qfbwindow_p.h +++ b/src/platformsupport/fbconvenience/qfbwindow_p.h @@ -68,13 +68,15 @@ public: WId winId() const { return windowId; } + void setBackingStore(QFbBackingStore *store) { mBackingStore = store; } + QFbBackingStore *backingStore() const { return mBackingStore; } + virtual void repaint(const QRegion&); protected: friend class QFbScreen; - friend class QFbBackingStore; - QFbBackingStore *surface; + QFbBackingStore *mBackingStore; QList<QFbScreen *> mScreens; QRect oldGeometry; bool visibleFlag; |