diff options
author | Jørgen Lind <jorgen.lind@nokia.com> | 2009-11-24 13:25:23 +0100 |
---|---|---|
committer | Jørgen Lind <jorgen.lind@nokia.com> | 2009-11-25 10:56:00 +0100 |
commit | 79b6ad01115cc9208e8a22d8dc925215da9792ed (patch) | |
tree | 5793256ed215933c2c92d404eecc4dd031bd5cbb /src/gui/painting/qpaintengine_blitter.cpp | |
parent | e6d223f9989ebe9805ddda007c9372143f9f1db6 (diff) |
Cleanup blitter and minimaldfb
A QBlittable is now aware if it is locked or not.
Created a seperate header file for DirectFB convenience functions
Diffstat (limited to 'src/gui/painting/qpaintengine_blitter.cpp')
-rw-r--r-- | src/gui/painting/qpaintengine_blitter.cpp | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp index 0632ae0d98..7336dccef0 100644 --- a/src/gui/painting/qpaintengine_blitter.cpp +++ b/src/gui/painting/qpaintengine_blitter.cpp @@ -157,7 +157,6 @@ public: blitter= p->blittable(); raster = new QRasterPaintEngine(p->buffer()); capabillities = new CapabilitiesToStateMask(blitter->capabilities()); - lock(); } inline void lock() { @@ -175,12 +174,12 @@ public: } void fillRect(const QRectF &rect, const QColor &color) { - lock(); +// lock(); QRectF targetRect = rect; if (hasXForm) { targetRect = state->matrix.mapRect(rect); } - QClipData *clipData = raster->state()->clip; + QClipData *clipData = state->clip; if (clipData) { if (clipData->hasRectClip) { unlock(); @@ -614,10 +613,12 @@ class QBlittablePrivate { public: QBlittablePrivate(const QRect &rect, QBlittable::Capabilities caps) - : caps(caps), m_rect(rect) + : caps(caps), m_rect(rect), locked(false), cachedImg(0) {} QBlittable::Capabilities caps; QRect m_rect; + bool locked; + QImage *cachedImg; }; @@ -644,3 +645,22 @@ QRect QBlittable::rect() const return d->m_rect; } +QImage *QBlittable::lock() +{ + Q_D(QBlittable); + if (!d->locked) { + d->cachedImg = doLock(); + d->locked = true; + } + + return d->cachedImg; +} + +void QBlittable::unlock() +{ + Q_D(QBlittable); + if (d->locked) { + doUnlock(); + d->locked = false; + } +} |