SaveState Manager: Fix game specific filtering

This commit is contained in:
Elad 2025-10-20 16:16:41 +03:00
parent 0c4e7fc178
commit c683b47ac3

View file

@ -549,33 +549,38 @@ void savestate_manager_dialog::StartSavestateLoadThreads()
return; return;
} }
std::vector<std::unique_ptr<game_savestates_data>> game_data(count); std::vector<std::unique_ptr<game_savestates_data>> game_data;
qRegisterMetaType<QVector<int>>("QVector<int>"); qRegisterMetaType<QVector<int>>("QVector<int>");
QList<int> indices; QList<int> indices;
for (int i = 0; i < count; ++i) for (int i = 0; i < count; ++i)
{ {
indices.append(i); auto game_data_ptr = std::make_unique<game_savestates_data>();
game_data_ptr->title_id = folder_list[i].toStdString();
game_data[i] = std::make_unique<game_savestates_data>();
game_data[i]->title_id = folder_list[i].toStdString();
for (const game_info& gameinfo : m_game_info) 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_ptr->game_name = gameinfo->info.name;
game_data[i]->game_icon_path = gameinfo->info.icon_path; game_data_ptr->game_icon_path = gameinfo->info.icon_path;
break; 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<void> future_watcher; QFutureWatcher<void> 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); progress_dialog progress_dialog(tr("Loading savestates"), tr("Loading savestates, please wait..."), tr("Cancel"), 0, 1, false, this, Qt::Dialog | Qt::WindowTitleHint | Qt::CustomizeWindowHint);