diff options
Diffstat (limited to 'src/quick/items/context2d/qquickcanvasitem.cpp')
-rw-r--r-- | src/quick/items/context2d/qquickcanvasitem.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/quick/items/context2d/qquickcanvasitem.cpp b/src/quick/items/context2d/qquickcanvasitem.cpp index 4145b2f6ff..11aff9b95d 100644 --- a/src/quick/items/context2d/qquickcanvasitem.cpp +++ b/src/quick/items/context2d/qquickcanvasitem.cpp @@ -592,7 +592,9 @@ void QQuickCanvasItem::geometryChanged(const QRectF &newGeometry, const QRectF & QQuickItem::geometryChanged(newGeometry, oldGeometry); - QSizeF newSize = newGeometry.size(); + // Due to indirect recursion, newGeometry may be outdated + // after this call, so we use width and height instead. + QSizeF newSize = QSizeF(width(), height()); if (!d->hasCanvasSize && d->canvasSize != newSize) { d->canvasSize = newSize; emit canvasSizeChanged(); @@ -1124,6 +1126,9 @@ bool QQuickCanvasItem::createContext(const QString &contextType) { Q_D(QQuickCanvasItem); + if (!window()) + return false; + if (contextType == QLatin1String("2d")) { if (d->contextType.compare(QLatin1String("2d"), Qt::CaseInsensitive) != 0) { d->contextType = QLatin1String("2d"); |