From ecd23041a4787c9eda36ec8c9386ea190feed07f Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 4 Sep 2020 18:34:18 +0100 Subject: [PATCH] Don't delete thread in LambdaThread until destructor * This means a non-self deleting thread can be waited for or queried about still after it's completed. --- qrenderdoc/Code/QRDUtils.h | 3 +-- qrenderdoc/Windows/Dialogs/CaptureDialog.cpp | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/qrenderdoc/Code/QRDUtils.h b/qrenderdoc/Code/QRDUtils.h index 77801afbb..4d7356841 100644 --- a/qrenderdoc/Code/QRDUtils.h +++ b/qrenderdoc/Code/QRDUtils.h @@ -338,7 +338,6 @@ public slots: windowsSetName(); m_func(); m_Thread->quit(); - m_Thread = NULL; if(m_SelfDelete) deleteLater(); completed.acquire(); @@ -353,9 +352,9 @@ public: m_func = f; moveToThread(m_Thread); QObject::connect(m_Thread, &QThread::started, this, &LambdaThread::process); - QObject::connect(m_Thread, &QThread::finished, m_Thread, &QThread::deleteLater); } + ~LambdaThread() { m_Thread->deleteLater(); } void setName(QString name) { m_Name = name; diff --git a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp index a15586cf2..ae220f3fb 100644 --- a/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp +++ b/qrenderdoc/Windows/Dialogs/CaptureDialog.cpp @@ -589,8 +589,8 @@ void CaptureDialog::CheckAndroidSetup(QString &filename) }); scan->setName(lit("CheckAndroidSetup")); + scan->selfDelete(true); scan->start(); - scan->deleteLater(); } void CaptureDialog::androidWarn_mouseClick()