From 27510f5fa87a60b83dd16ec7cfe57782bf7b3f97 Mon Sep 17 00:00:00 2001 From: Functionable <40835042+Functionable@users.noreply.github.com> Date: Sat, 13 Dec 2025 12:05:34 +0000 Subject: [PATCH] ISO: Move game image loading to game_list_base::IconLoadFunction --- rpcs3/rpcs3qt/game_list_base.cpp | 17 ++++++++++++++++- rpcs3/rpcs3qt/game_list_frame.cpp | 11 +---------- rpcs3/rpcs3qt/gui_game_info.h | 1 + 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/rpcs3/rpcs3qt/game_list_base.cpp b/rpcs3/rpcs3qt/game_list_base.cpp index 51e43c95bf..e4fb012b17 100644 --- a/rpcs3/rpcs3qt/game_list_base.cpp +++ b/rpcs3/rpcs3qt/game_list_base.cpp @@ -1,6 +1,8 @@ #include "stdafx.h" #include "game_list_base.h" +#include "Loader/ISO.h" + #include #include @@ -50,7 +52,20 @@ void game_list_base::IconLoadFunction(game_info game, qreal device_pixel_ratio, if (game->icon.isNull() && (game->info.icon_path.empty() || !game->icon.load(QString::fromStdString(game->info.icon_path)))) { - if (game_list_log.warning) + if (game->icon_in_archive) + { + iso_archive archive(game->info.path); + auto icon_file = archive.open(game->info.icon_path); + auto icon_size = icon_file.size(); + QByteArray data(icon_size, 0); + icon_file.read(data.data(), icon_size); + QImage iconImage; + if (iconImage.loadFromData(data)) + { + game->icon = QPixmap::fromImage(iconImage); + } + } + else if (game_list_log.warning) { bool logged = false; { diff --git a/rpcs3/rpcs3qt/game_list_frame.cpp b/rpcs3/rpcs3qt/game_list_frame.cpp index 219b4075b8..6c8dee2a15 100644 --- a/rpcs3/rpcs3qt/game_list_frame.cpp +++ b/rpcs3/rpcs3qt/game_list_frame.cpp @@ -643,16 +643,7 @@ void game_list_frame::OnParsingFinished() { if (!archive->exists(game.info.icon_path)) return; - auto icon_file = archive->open(game.info.icon_path); - auto icon_size = icon_file.size(); - QByteArray data(icon_size, 0); - icon_file.read(data.data(), icon_size); - QImage iconImage; - if (iconImage.loadFromData(data)) - { - game.icon = QPixmap::fromImage(iconImage); - } - game.info.icon_path.clear(); + game.icon_in_archive = true; } } diff --git a/rpcs3/rpcs3qt/gui_game_info.h b/rpcs3/rpcs3qt/gui_game_info.h index 984f8eb7bf..3b19d27458 100644 --- a/rpcs3/rpcs3qt/gui_game_info.h +++ b/rpcs3/rpcs3qt/gui_game_info.h @@ -20,6 +20,7 @@ struct gui_game_info bool has_custom_icon = false; bool has_hover_gif = false; bool has_hover_pam = false; + bool icon_in_archive = false; movie_item_base* item = nullptr; // Returns the visible version string in the game list