diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2018-06-25 12:19:02 +0200 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2018-06-25 13:04:35 +0000 |
commit | 0877ced9806c99d02454a7336ecf0299bc4113ae (patch) | |
tree | fd8512a47bc6e9d50edd00541530b5d51772b3b5 /src/gui/painting | |
parent | 92b3ef24ed35b405f50ac67b2e51e74eb384451b (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.cpp | 6 |
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) |