summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-04-26 01:00:13 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-04-26 01:00:13 +0200
commit0dff40adf81d0bc2023c109abf266053431bfcd0 (patch)
tree85776cb125584759b706f45f1465bd5d3d9ccfe4 /src/gui
parent7db9e02ad11c391c1d616defd11e7deb2718d60a (diff)
parent913dd26c92f406e3da83ed83701ce47e659bcc48 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp2
-rw-r--r--src/gui/painting/qstroker.cpp4
-rw-r--r--src/gui/painting/qstroker_p.h1
3 files changed, 6 insertions, 1 deletions
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index d3404c6575..65319c0804 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -796,7 +796,7 @@ void QRasterPaintEngine::updatePen(const QPen &pen)
s->flags.fast_pen = pen_style > Qt::NoPen
&& s->penData.blend
&& ((cosmetic && penWidth <= 1)
- || (!cosmetic && s->flags.tx_noshear && penWidth * s->txscale <= 1));
+ || (!cosmetic && (s->flags.tx_noshear || !s->flags.antialiased) && penWidth * s->txscale <= 1));
s->flags.non_complex_pen = qpen_capStyle(s->lastPen) <= Qt::SquareCap && s->flags.tx_noshear;
diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp
index c01531caf2..327190b678 100644
--- a/src/gui/painting/qstroker.cpp
+++ b/src/gui/painting/qstroker.cpp
@@ -1151,6 +1151,8 @@ void QDashStroker::processCurrentSubpath()
QSubpathFlatIterator it(&m_elements, m_dashThreshold);
qfixed2d prev = it.next();
+ if (!prev.isFinite())
+ return;
bool clipping = !m_clip_rect.isEmpty();
qfixed2d move_to_pos = prev;
@@ -1166,6 +1168,8 @@ void QDashStroker::processCurrentSubpath()
bool hasMoveTo = false;
while (it.hasNext()) {
QStrokerOps::Element e = it.next();
+ if (!qfixed2d(e).isFinite())
+ continue;
Q_ASSERT(e.isLineTo());
cline = QLineF(qt_fixed_to_real(prev.x),
diff --git a/src/gui/painting/qstroker_p.h b/src/gui/painting/qstroker_p.h
index 722a0904f3..f107b6eb20 100644
--- a/src/gui/painting/qstroker_p.h
+++ b/src/gui/painting/qstroker_p.h
@@ -104,6 +104,7 @@ struct qfixed2d
qfixed x;
qfixed y;
+ bool isFinite() { return qIsFinite(x) && qIsFinite(y); }
bool operator==(const qfixed2d &other) const { return qFuzzyCompare(x, other.x)
&& qFuzzyCompare(y, other.y); }
};