diff options
author | Michal Klocek <michal.klocek@digia.com> | 2014-02-20 16:50:15 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-14 18:13:34 +0100 |
commit | 72fe9f1d0df9bf2cb49306aea571a88056591f6d (patch) | |
tree | 74b3680c580312aa7cfe6d60d68c4ec281f84f43 /src/gui/painting/qpaintengine_blitter.cpp | |
parent | 45f264b682e0b2ad7a162bd75b702837fe04c06a (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.cpp | 3 |
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; } |