diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-04-13 15:21:19 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2021-04-13 16:04:43 +0200 |
commit | ef707d2077862933b767bccf17ca0c54f9475de0 (patch) | |
tree | 738eab008fdfbdb4a027e2349f3619b79c2641e5 | |
parent | af1bdd8447771728321984f87447187f0284db6b (diff) |
PySide6: Fix performance of QPainter::drawPoints(QPolygon)
Reorder the overloads so that the QPolygon overload is checked first
before the costly sequence type check of the QPoint list.
Speeds up the example from 1800ms to 80ms.
Fixes: PYSIDE-1540
Pick-to: 6.0 5.15
Change-Id: I108b0e98c82540703ee80345026ecdc3b55dfd4e
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r-- | sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml index 5184b8c10..4dd81aeb4 100644 --- a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml +++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml @@ -1777,18 +1777,23 @@ <modify-function signature="drawRects(const QRect*,int)" remove="all"/> <modify-function signature="drawRects(const QRectF*,int)" remove="all"/> <!-- ### --> + <!-- PYSIDE-1540: Preferably use the QPolygon overloads first to avoid + a costly sequence type check on QPolygon. --> <modify-function signature="drawPoints(const QPoint*,int)" remove="all"/> - <add-function signature="drawPoints(QVector<QPoint>)"> + <add-function signature="drawPoints(QList<QPoint>)" overload-number="2"> <inject-code> <insert-template name="qpainter_drawlist"/> </inject-code> </add-function> <modify-function signature="drawPoints(const QPointF*,int)" remove="all"/> - <add-function signature="drawPoints(QVector<QPointF>)"> + <add-function signature="drawPoints(QList<QPointF>)" overload-number="3"> <inject-code> <insert-template name="qpainter_drawlist"/> </inject-code> </add-function> + <modify-function signature="drawPoints(const QPolygon&)" overload-number="0"/> + <modify-function signature="drawPoints(const QPolygonF&)" overload-number="1"/> + <modify-function signature="drawPolygon(const QPoint*,int,Qt::FillRule)" remove="all"/> <add-function signature="drawPolygon(QVector<QPoint>,Qt::FillRule)"> <inject-code file="../glue/qtgui.cpp" snippet="qpainter-drawpolygon"/> |