From 564b7fdc9c15c82f92a71855784801d124b465c4 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 7 Sep 2018 16:08:08 -0400 Subject: yuzu: Move GameListWorker to its own source files This has gotten sufficiently large enough to warrant moving it to its own source files. Especially given it dumps the file_sys headers around code that doesn't use it for the most part. This'll also make it easier to introduce a type alias for the compatibility list, so a large unordered_map type declaration doesn't need to be specified all the time (we don't want to propagate the game_list_p.h include via the main game_list.h header). --- src/yuzu/game_list_p.h | 76 +++++++------------------------------------------- 1 file changed, 10 insertions(+), 66 deletions(-) (limited to 'src/yuzu/game_list_p.h') diff --git a/src/yuzu/game_list_p.h b/src/yuzu/game_list_p.h index a70a151c5..2720bf143 100644 --- a/src/yuzu/game_list_p.h +++ b/src/yuzu/game_list_p.h @@ -6,9 +6,7 @@ #include #include -#include #include -#include #include #include #include @@ -16,7 +14,6 @@ #include #include #include -#include #include #include @@ -26,12 +23,6 @@ #include "yuzu/ui_settings.h" #include "yuzu/util/util.h" -namespace FileSys { -class NCA; -class RegisteredCache; -class VfsFilesystem; -} // namespace FileSys - /** * Gets the default icon (for games without valid SMDH) * @param large If true, returns large icon (48x48), otherwise returns small icon (24x24) @@ -43,17 +34,6 @@ static QPixmap GetDefaultIcon(u32 size) { return icon; } -static auto FindMatchingCompatibilityEntry( - const std::unordered_map>& compatibility_list, - u64 program_id) { - return std::find_if( - compatibility_list.begin(), compatibility_list.end(), - [program_id](const std::pair>& element) { - std::string pid = fmt::format("{:016X}", program_id); - return element.first == pid; - }); -} - class GameListItem : public QStandardItem { public: @@ -197,49 +177,13 @@ public: } }; -/** - * Asynchronous worker object for populating the game list. - * Communicates with other threads through Qt's signal/slot system. - */ -class GameListWorker : public QObject, public QRunnable { - Q_OBJECT - -public: - GameListWorker( - std::shared_ptr vfs, QString dir_path, bool deep_scan, - const std::unordered_map>& compatibility_list); - ~GameListWorker() override; - -public slots: - /// Starts the processing of directory tree information. - void run() override; - /// Tells the worker that it should no longer continue processing. Thread-safe. - void Cancel(); - -signals: - /** - * The `EntryReady` signal is emitted once an entry has been prepared and is ready - * to be added to the game list. - * @param entry_items a list with `QStandardItem`s that make up the columns of the new entry. - */ - void EntryReady(QList entry_items); - - /** - * After the worker has traversed the game directory looking for entries, this signal is emmited - * with a list of folders that should be watched for changes as well. - */ - void Finished(QStringList watch_list); - -private: - std::shared_ptr vfs; - std::map> nca_control_map; - QStringList watch_list; - QString dir_path; - bool deep_scan; - const std::unordered_map>& compatibility_list; - std::atomic_bool stop_processing; - - void AddInstalledTitlesToGameList(); - void FillControlMap(const std::string& dir_path); - void AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion = 0); -}; +inline auto FindMatchingCompatibilityEntry( + const std::unordered_map>& compatibility_list, + u64 program_id) { + return std::find_if( + compatibility_list.begin(), compatibility_list.end(), + [program_id](const std::pair>& element) { + std::string pid = fmt::format("{:016X}", program_id); + return element.first == pid; + }); +} -- cgit v1.2.3