From fcb241b874330a045e5ba4634598476706ca7fdc Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Mon, 23 Jan 2012 11:41:53 +0100 Subject: blitter: Kill the isBlitterLocked variable of the MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It starts with being initialized wrongly, the call to buffer() will lock the data while we think it is not locked, it can also get out of sync by someone calling buffer() again. Remove the variable and check with the QBlittable if we need to lock the resource into memory. Change-Id: I6d7b336ed2e272724ec5b1348b410cbc4452422f Based-On: I350375011138d1b4c2c48c100b7b30b8ea2ae460 Reviewed-by: Jørgen Lind --- src/gui/painting/qblittable.cpp | 6 ++++++ src/gui/painting/qblittable_p.h | 2 ++ src/gui/painting/qpaintengine_blitter.cpp | 14 +++----------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/gui/painting/qblittable.cpp b/src/gui/painting/qblittable.cpp index a64396a..f7d994e 100644 --- a/src/gui/painting/qblittable.cpp +++ b/src/gui/painting/qblittable.cpp @@ -80,6 +80,12 @@ QSize QBlittable::size() const return d->m_size; } +bool QBlittable::isLocked() const +{ + Q_D(const QBlittable); + return d->locked; +} + QImage *QBlittable::lock() { Q_D(QBlittable); diff --git a/src/gui/painting/qblittable_p.h b/src/gui/painting/qblittable_p.h index 2c7de9c..711c6b7 100644 --- a/src/gui/painting/qblittable_p.h +++ b/src/gui/painting/qblittable_p.h @@ -77,6 +77,8 @@ public: virtual void fillRect(const QRectF &rect, const QColor &color) = 0; virtual void drawPixmap(const QRectF &rect, const QPixmap &pixmap, const QRectF &subrect) = 0; + bool isLocked() const; + QImage *lock(); void unlock(); diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp index 1b7030f..e6b1060 100644 --- a/src/gui/painting/qpaintengine_blitter.cpp +++ b/src/gui/painting/qpaintengine_blitter.cpp @@ -189,7 +189,6 @@ public: : QPaintEngineExPrivate() , pmData(p) , caps(pmData->blittable()->capabilities()) - , isBlitterLocked(false) , hasXForm(false) { @@ -197,17 +196,12 @@ public: } inline void lock() { - if (!isBlitterLocked) { - raster->d_func()->rasterBuffer->prepare(pmData->blittable()->lock()); - isBlitterLocked = true; - } + if (!pmData->blittable()->isLocked()) + raster->d_func()->rasterBuffer->prepare(pmData->buffer()); } inline void unlock() { - if (isBlitterLocked) { - pmData->blittable()->unlock(); - isBlitterLocked = false; - } + pmData->blittable()->unlock(); } void fillRect(const QRectF &rect, const QColor &color) { @@ -276,8 +270,6 @@ public: QBlittablePixmapData *pmData; CapabilitiesToStateMask caps; - bool isBlitterLocked; - uint hasXForm; }; -- cgit v0.12