Don't crash at exit with a download still in flight

A request started since the last RequestManager::Update (headless never
calls it) sat in newDownloads_, which CancelAll skipped. It was then
destroyed along with the static g_DownloadManager at exit, and its
destructor removed its progress bar from the already destroyed g_OSD:
"mutex lock failed". Seen with a Netconf dialog still downloading the
infra DNS json when a test ended.

CancelAll now takes the new ones too, and runs at shutdown while g_OSD is
still there. The Netconf json request is also let go of when the emulator
shuts down, rather than living on into the next game.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Henrik RydgårdandClaude Opus 5.5 committed 2026-09-24 11:23:59 -06:00
1 parent 428c1a6aa6
commit f20dd7565b
4 files changed
+18

No files matched your search

+5
View File
@@ -168,6 +168,11 @@ restart:
}
void RequestManager::CancelAll() {
// Including ones started since the last Update (headless never calls it).
for (auto &iter : newDownloads_) {
downloads_.push_back(iter);
}
newDownloads_.clear();
for (size_t i = 0; i < downloads_.size(); i++) {
downloads_[i]->Cancel();
}