From bbb6298204b95f049c8a177365125247ba49dba3 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Mon, 23 Nov 2020 13:26:33 +0100 Subject: Purge renderpass refs from renderer when redirecting via QRhiRt Pick-to: 6.0 Fixes: QTBUG-88761 Change-Id: Ia5df65a4a09a7554a7d0cca4533f766cb5abe97b Reviewed-by: Miikka Heikkinen Reviewed-by: Andy Nichols --- src/quick/items/qquickrendertarget.cpp | 1 + src/quick/items/qquickwindow.cpp | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src/quick/items') diff --git a/src/quick/items/qquickrendertarget.cpp b/src/quick/items/qquickrendertarget.cpp index 69063ecdbe..3ccfe85b88 100644 --- a/src/quick/items/qquickrendertarget.cpp +++ b/src/quick/items/qquickrendertarget.cpp @@ -404,6 +404,7 @@ bool QQuickRenderTargetPrivate::resolve(QRhi *rhi, QQuickWindowRenderTarget *dst case Type::RhiRenderTarget: dst->renderTarget = u.rhiRt; + dst->rpDesc = u.rhiRt->renderPassDescriptor(); // just for QQuickWindowRenderTarget::reset() dst->owns = false; return true; diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 9e01737c8b..698ac341a4 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -515,14 +515,15 @@ void forceUpdate(QQuickItem *item) void QQuickWindowRenderTarget::reset(QRhi *rhi, QSGRenderer *renderer) { - if (rhi && owns) { - if (renderer != nullptr && rpDesc != nullptr) + if (rhi) { + if (renderer) renderer->invalidatePipelineCacheDependency(rpDesc); - - delete renderTarget; - delete rpDesc; - delete texture; - delete depthStencil; + if (owns) { + delete renderTarget; + delete rpDesc; + delete texture; + delete depthStencil; + } } renderTarget = nullptr; -- cgit v1.2.3