summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorEirik Aavitsland <eirik.aavitsland@qt.io>2018-06-25 12:19:02 +0200
committerEirik Aavitsland <eirik.aavitsland@qt.io>2018-06-25 13:04:35 +0000
commit0877ced9806c99d02454a7336ecf0299bc4113ae (patch)
treefd8512a47bc6e9d50edd00541530b5d51772b3b5 /src/gui/painting
parent92b3ef24ed35b405f50ac67b2e51e74eb384451b (diff)
Fix: crash when painting with high-dpr image brush
The recently merged f5fe9fc5a4 (Add ObjectMode to QGradient) changed combineXForm() to check the brush's gradient's coordinatemode. However, combineXForm() is now also used when painting with high-dpr image brush. In the latter case, the gradient is 0 so this would crash. Testcase: tst_lancelot, image_dpr.qps. Change-Id: I5e2785ef708768c3fa3eac0999c9c24fd25108f4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp
index 638834ef3b..0c0df0fb13 100644
--- a/src/gui/painting/qemulationpaintengine.cpp
+++ b/src/gui/painting/qemulationpaintengine.cpp
@@ -75,10 +75,10 @@ QPainterState *QEmulationPaintEngine::createState(QPainterState *orig) const
static inline void combineXForm(QBrush *brush, const QRectF &r)
{
QTransform t(r.width(), 0, 0, r.height(), r.x(), r.y());
- if (brush->gradient()->coordinateMode() == QGradient::ObjectMode)
- brush->setTransform(brush->transform() * t);
+ if (brush->gradient() && brush->gradient()->coordinateMode() != QGradient::ObjectMode)
+ brush->setTransform(t * brush->transform()); // compat mode
else
- brush->setTransform(t * brush->transform());
+ brush->setTransform(brush->transform() * t);
}
void QEmulationPaintEngine::fill(const QVectorPath &path, const QBrush &brush)