diff --git a/rpcs3/rpcs3qt/game_list_frame.cpp b/rpcs3/rpcs3qt/game_list_frame.cpp index 04cd8a55c3..86b83b3955 100644 --- a/rpcs3/rpcs3qt/game_list_frame.cpp +++ b/rpcs3/rpcs3qt/game_list_frame.cpp @@ -401,8 +401,8 @@ void game_list_frame::Refresh(const bool fromDrive, const bool scrollAfter) path_list.back().resize(path_list.back().find_last_not_of('/') + 1); } - // Used to remove duplications from the list (serial -> set of cats) - std::map> serial_cat; + // Used to remove duplications from the list (serial -> set of cat names) + std::map> serial_cat_name; QSet serials; @@ -431,7 +431,7 @@ void game_list_frame::Refresh(const bool fromDrive, const bool scrollAfter) game.attr = psf::get_integer(psf, "ATTRIBUTE", 0); // Detect duplication - if (!serial_cat[game.serial].emplace(game.category).second) + if (!serial_cat_name[game.serial].emplace(game.category + game.name).second) { continue; } @@ -517,7 +517,13 @@ void game_list_frame::Refresh(const bool fromDrive, const bool scrollAfter) { LOG_ERROR(GENERAL, "Failed to update the displayed version numbers for title ID %s\n%s thrown: %s", entry->info.serial, typeid(e).name(), e.what()); } - break; // Next Entry + + const std::string key = "GD" + other->info.name; + serial_cat_name[other->info.serial].erase(key); + if (!serial_cat_name[other->info.serial].count(key)) + { + break; + } } } }