1
0
Fork 0
forked from suyu/suyu

yuzu/game_list_worker: Move std::string construction after the termination check in callbacks

Avoids potentially allocating a std::string instance when it isn't
needed.
This commit is contained in:
Lioncash 2018-12-04 18:39:32 -05:00
parent 8c108eaca7
commit a49fd7fd57

View file

@ -163,13 +163,12 @@ void GameListWorker::AddInstalledTitlesToGameList() {
void GameListWorker::FillControlMap(const std::string& dir_path) { void GameListWorker::FillControlMap(const std::string& dir_path) {
const auto nca_control_callback = [this](u64* num_entries_out, const std::string& directory, const auto nca_control_callback = [this](u64* num_entries_out, const std::string& directory,
const std::string& virtual_name) -> bool { const std::string& virtual_name) -> bool {
const std::string physical_name = directory + DIR_SEP + virtual_name;
if (stop_processing) { if (stop_processing) {
// Breaks the callback loop // Breaks the callback loop
return false; return false;
} }
const std::string physical_name = directory + DIR_SEP + virtual_name;
const QFileInfo file_info(QString::fromStdString(physical_name)); const QFileInfo file_info(QString::fromStdString(physical_name));
if (!file_info.isDir() && file_info.suffix() == QStringLiteral("nca")) { if (!file_info.isDir() && file_info.suffix() == QStringLiteral("nca")) {
auto nca = auto nca =
@ -188,12 +187,13 @@ void GameListWorker::FillControlMap(const std::string& dir_path) {
void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion) { void GameListWorker::AddFstEntriesToGameList(const std::string& dir_path, unsigned int recursion) {
const auto callback = [this, recursion](u64* num_entries_out, const std::string& directory, const auto callback = [this, recursion](u64* num_entries_out, const std::string& directory,
const std::string& virtual_name) -> bool { const std::string& virtual_name) -> bool {
std::string physical_name = directory + DIR_SEP + virtual_name; if (stop_processing) {
// Breaks the callback loop.
return false;
}
if (stop_processing) const std::string physical_name = directory + DIR_SEP + virtual_name;
return false; // Breaks the callback loop. const bool is_dir = FileUtil::IsDirectory(physical_name);
bool is_dir = FileUtil::IsDirectory(physical_name);
if (!is_dir && if (!is_dir &&
(HasSupportedFileExtension(physical_name) || IsExtractedNCAMain(physical_name))) { (HasSupportedFileExtension(physical_name) || IsExtractedNCAMain(physical_name))) {
std::unique_ptr<Loader::AppLoader> loader = std::unique_ptr<Loader::AppLoader> loader =