diff options
author | Anders Bakken <anders.bakken@nokia.com> | 2009-07-22 16:50:49 (GMT) |
---|---|---|
committer | Anders Bakken <anders.bakken@nokia.com> | 2009-07-22 17:34:19 (GMT) |
commit | eb6fa7e03a5c91e3da93d0c6203d9bad52dfcbb9 (patch) | |
tree | 3b2bd86168318f29cf5966468a2729255f02492e /src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h | |
parent | 95baddfc2f5dc719188f52519c95206959983206 (diff) | |
download | Qt-eb6fa7e03a5c91e3da93d0c6203d9bad52dfcbb9.zip Qt-eb6fa7e03a5c91e3da93d0c6203d9bad52dfcbb9.tar.gz Qt-eb6fa7e03a5c91e3da93d0c6203d9bad52dfcbb9.tar.bz2 |
Fix dfbwindowsurface handling for offscreen mode
This patch vastly simplifies the geometry handling (setGeometry/move)
It also implements a mode in which DirectFB implementations that do not
support windows can use an offscreen buffer as its backing store.
Previously the only way to do this was to paint directly on the primary
surface. This didn't work when the dfb driver didn't support an
accelerated mouse cursor.
It also detects the situation when the cursor isn't accelerated and
takes care of painting it manually when needed.
Reviewed-by: Donald <qt-info@nokia.com>
Diffstat (limited to 'src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h')
-rw-r--r-- | src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h index 7885b73..c46d93b 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.h @@ -67,7 +67,7 @@ public: bool isValid() const; - void setGeometry(const QRect &rect, const QRegion &mask); + void setGeometry(const QRect &rect); QString key() const { return QLatin1String("directfb"); } QByteArray permanentState() const; @@ -76,7 +76,6 @@ public: bool scroll(const QRegion &area, int dx, int dy); bool move(const QPoint &offset); - QRegion move(const QPoint &offset, const QRegion &newClip); QImage image() const { return QImage(); } QPaintDevice *paintDevice() { return this; } @@ -88,7 +87,6 @@ public: void endPaint(const QRegion &); QImage *buffer(const QWidget *widget); - private: #ifndef QT_NO_DIRECTFB_WM void createWindow(); @@ -96,7 +94,11 @@ private: #endif QDirectFBPaintEngine *engine; - bool onscreen; + enum Mode { + Primary, + Offscreen, + Window + } mode; QList<QImage*> bufferImages; DFBSurfaceFlipFlags flipFlags; |