diff --git a/UI/NativeApp.cpp b/UI/NativeApp.cpp index 78918c57e2d8..bd7c16569987 100644 --- a/UI/NativeApp.cpp +++ b/UI/NativeApp.cpp @@ -942,15 +942,18 @@ void HandleGlobalMessage(const std::string &msg, const std::string &value) { void NativeUpdate() { PROFILE_END_FRAME(); + std::vector toProcess; { std::lock_guard lock(pendingMutex); - for (size_t i = 0; i < pendingMessages.size(); i++) { - HandleGlobalMessage(pendingMessages[i].msg, pendingMessages[i].value); - screenManager->sendMessage(pendingMessages[i].msg.c_str(), pendingMessages[i].value.c_str()); - } + toProcess = std::move(pendingMessages); pendingMessages.clear(); } + for (size_t i = 0; i < toProcess.size(); i++) { + HandleGlobalMessage(toProcess[i].msg, toProcess[i].value); + screenManager->sendMessage(toProcess[i].msg.c_str(), toProcess[i].value.c_str()); + } + g_DownloadManager.Update(); screenManager->update(); }