summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpaintengine_blitter.cpp
diff options
context:
space:
mode:
authorJørgen Lind <jorgen.lind@nokia.com>2009-11-24 13:25:23 +0100
committerJørgen Lind <jorgen.lind@nokia.com>2009-11-25 10:56:00 +0100
commit79b6ad01115cc9208e8a22d8dc925215da9792ed (patch)
tree5793256ed215933c2c92d404eecc4dd031bd5cbb /src/gui/painting/qpaintengine_blitter.cpp
parente6d223f9989ebe9805ddda007c9372143f9f1db6 (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.cpp28
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;
+ }
+}