summaryrefslogtreecommitdiffstats
path: root/src/gui/painting/qpaintengine_blitter.cpp
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@digia.com>2014-02-20 16:50:15 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-14 18:13:34 +0100
commit72fe9f1d0df9bf2cb49306aea571a88056591f6d (patch)
tree74b3680c580312aa7cfe6d60d68c4ec281f84f43 /src/gui/painting/qpaintengine_blitter.cpp
parent45f264b682e0b2ad7a162bd75b702837fe04c06a (diff)
Fix a crash of accessing deleted paintengine
When painting to QPixmap with QBlitterPaintEngine and dfb PaintEngine have PaintDevice (pdev) as QImage. Painter code uses PaintDevice::paintEngine() to refer to paintEngine. This will became dangling pointer since QDirectFbBlitter::doLock() will delete QImage. Instead return QPixmap as PaintDevice. Change-Id: Idfac919b6438a82b412020e441e0a102e4a2a052 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Diffstat (limited to 'src/gui/painting/qpaintengine_blitter.cpp')
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index e356a3a36a..26eacacd49 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -494,11 +494,12 @@ void QBlitterPaintEngine::clipEnabledChanged()
bool QBlitterPaintEngine::begin(QPaintDevice *pdev)
{
+ Q_D(QBlitterPaintEngine);
bool ok = QRasterPaintEngine::begin(pdev);
#ifdef QT_BLITTER_RASTEROVERLAY
- Q_D(QBlitterPaintEngine);
d->pmData->unmergeOverlay();
#endif
+ d->pdev = pdev;
return ok;
}