diff options
Diffstat (limited to 'src/quick/items/qquickrendercontrol.cpp')
-rw-r--r-- | src/quick/items/qquickrendercontrol.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/quick/items/qquickrendercontrol.cpp b/src/quick/items/qquickrendercontrol.cpp index fb1c6366f2..025acefec2 100644 --- a/src/quick/items/qquickrendercontrol.cpp +++ b/src/quick/items/qquickrendercontrol.cpp @@ -187,7 +187,6 @@ void QQuickRenderControlPrivate::windowDestroyed() { if (window) { rc->invalidate(); - QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); delete QQuickWindowPrivate::get(window)->animationController; QQuickWindowPrivate::get(window)->animationController = nullptr; @@ -313,9 +312,6 @@ bool QQuickRenderControl::sync() void QQuickRenderControl::invalidate() { Q_D(QQuickRenderControl); - if (!d->initialized) - return; - if (!d->window) return; @@ -323,6 +319,9 @@ void QQuickRenderControl::invalidate() cd->fireAboutToStop(); cd->cleanupNodesOnShutdown(); + if (!d->initialized) + return; + // We must invalidate since the context can potentially be destroyed by the // application right after returning from this function. Invalidating is // also essential to allow a subsequent initialize() to succeed. @@ -392,6 +391,7 @@ QImage QQuickRenderControl::grab() grabContent.setDevicePixelRatio(d->window->effectiveDevicePixelRatio()); } #endif +#if QT_CONFIG(thread) } else if (d->window->rendererInterface()->graphicsApi() == QSGRendererInterface::Software) { QQuickWindowPrivate *cd = QQuickWindowPrivate::get(d->window); cd->polishItems(); @@ -409,6 +409,7 @@ QImage QQuickRenderControl::grab() render(); softwareRenderer->setCurrentPaintDevice(prevDev); } +#endif } else { qWarning("QQuickRenderControl: grabs are not supported with the current Qt Quick backend"); } |