From a84acc963b6684e4aa91c4dff5acf47e5f6cd8d2 Mon Sep 17 00:00:00 2001 From: Val Doroshchuk Date: Mon, 4 Mar 2019 10:53:17 +0100 Subject: Fix leaking of QML QQuickItemGrabResult objects If QQuickItem::grabToImage is called from QML, QQuickItemGrabResult is created but was never deleted. Adding a deleteLater() right after dispatching the callback ensures that QQuickItemGrabResult objects are deleted. Task-number: QTBUG-73723 Change-Id: Ifda85599098f2b679ae5f22e1d47a73962ed0a85 Reviewed-by: Shawn Rutledge --- src/quick/items/qquickitemgrabresult.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/quick/items/qquickitemgrabresult.cpp') diff --git a/src/quick/items/qquickitemgrabresult.cpp b/src/quick/items/qquickitemgrabresult.cpp index b45cb09c4b..f298803c7f 100644 --- a/src/quick/items/qquickitemgrabresult.cpp +++ b/src/quick/items/qquickitemgrabresult.cpp @@ -226,10 +226,12 @@ bool QQuickItemGrabResult::event(QEvent *e) Q_D(QQuickItemGrabResult); if (e->type() == Event_Grab_Completed) { // JS callback - if (d->qmlEngine && d->callback.isCallable()) + if (d->qmlEngine && d->callback.isCallable()) { d->callback.call(QJSValueList() << d->qmlEngine->newQObject(this)); - else + deleteLater(); + } else { Q_EMIT ready(); + } return true; } return QObject::event(e); -- cgit v1.2.3