diff --git a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp index bc37438c73..46b99c34b0 100644 --- a/rpcs3/rpcs3qt/savestate_manager_dialog.cpp +++ b/rpcs3/rpcs3qt/savestate_manager_dialog.cpp @@ -549,33 +549,38 @@ void savestate_manager_dialog::StartSavestateLoadThreads() return; } - std::vector> game_data(count); + std::vector> game_data; qRegisterMetaType>("QVector"); QList indices; for (int i = 0; i < count; ++i) { - indices.append(i); - - game_data[i] = std::make_unique(); - game_data[i]->title_id = folder_list[i].toStdString(); + auto game_data_ptr = std::make_unique(); + game_data_ptr->title_id = folder_list[i].toStdString(); for (const game_info& gameinfo : m_game_info) { - if (gameinfo && gameinfo->info.serial == game_data[i]->title_id) + if (gameinfo && gameinfo->info.serial == game_data_ptr->title_id) { - game_data[i]->game_name = gameinfo->info.name; - game_data[i]->game_icon_path = gameinfo->info.icon_path; + game_data_ptr->game_name = gameinfo->info.name; + game_data_ptr->game_icon_path = gameinfo->info.icon_path; break; } } - if (game_data[i]->game_name.empty()) + if (!game_data_ptr->game_name.empty()) { - game_data[i]->game_name = game_data[i]->title_id; + indices.append(game_data.size()); + game_data.emplace_back(std::move(game_data_ptr)); } } + if (game_data.empty()) + { + RepaintUI(true); + return; + } + QFutureWatcher future_watcher; progress_dialog progress_dialog(tr("Loading savestates"), tr("Loading savestates, please wait..."), tr("Cancel"), 0, 1, false, this, Qt::Dialog | Qt::WindowTitleHint | Qt::CustomizeWindowHint);