From 2db8c89607e7ce83778ac6030474b71f7d4d903c Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sat, 28 Sep 2019 10:48:07 -0700 Subject: [PATCH] http: Avoid detaching threads, join instead. --- UI/RemoteISOScreen.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/UI/RemoteISOScreen.cpp b/UI/RemoteISOScreen.cpp index 6dd15835f6..7e97b878bd 100644 --- a/UI/RemoteISOScreen.cpp +++ b/UI/RemoteISOScreen.cpp @@ -327,7 +327,6 @@ RemoteISOConnectScreen::RemoteISOConnectScreen() : status_(ScanStatus::SCANNING) scanThread_ = new std::thread([](RemoteISOConnectScreen *thiz) { thiz->ExecuteScan(); }, this); - scanThread_->detach(); } RemoteISOConnectScreen::~RemoteISOConnectScreen() { @@ -341,6 +340,8 @@ RemoteISOConnectScreen::~RemoteISOConnectScreen() { break; } } + if (scanThread_->joinable()) + scanThread_->join(); delete scanThread_; } @@ -384,11 +385,12 @@ void RemoteISOConnectScreen::update() { status_ = ScanStatus::LOADING; // Let's reuse scanThread_. + if (scanThread_->joinable()) + scanThread_->join(); delete scanThread_; scanThread_ = new std::thread([](RemoteISOConnectScreen *thiz) { thiz->ExecuteLoad(); }, this); - scanThread_->detach(); break; case ScanStatus::FAILED: @@ -401,11 +403,12 @@ void RemoteISOConnectScreen::update() { status_ = ScanStatus::SCANNING; nextRetry_ = 0.0; + if (scanThread_->joinable()) + scanThread_->join(); delete scanThread_; scanThread_ = new std::thread([](RemoteISOConnectScreen *thiz) { thiz->ExecuteScan(); }, this); - scanThread_->detach(); } break;