From f2e1c71803b953c9adb9528c168cbbde23b3b30a Mon Sep 17 00:00:00 2001 From: Sintendo <3380580+Sintendo@users.noreply.github.com> Date: Wed, 24 Dec 2025 10:14:02 +0100 Subject: [PATCH 1/3] Common/FileSearch: Refactor DoFileSearch --- .../jni/AndroidCommon/AndroidCommon.cpp | 13 ++++++--- .../Android/jni/AndroidCommon/AndroidCommon.h | 27 ++++++++++++++----- Source/Android/jni/GameList/GameFileCache.cpp | 8 ++++-- Source/Core/Common/FileSearch.cpp | 8 ++---- Source/Core/Common/FileSearch.h | 26 ++++++++++++++++-- .../Core/HW/GCMemcard/GCMemcardDirectory.cpp | 4 +-- Source/Core/DiscIO/RiivolutionParser.cpp | 2 +- .../Config/Mapping/MappingWindow.cpp | 5 ++-- .../Core/DolphinQt/RiivolutionBootWidget.cpp | 2 +- .../Core/DolphinQt/Settings/InterfacePane.cpp | 6 ++--- .../DynamicInputTextureManager.cpp | 2 +- Source/Core/InputCommon/InputProfile.cpp | 4 +-- Source/Core/UICommon/GameFileCache.cpp | 8 +++--- Source/Core/UICommon/GameFileCache.h | 2 +- Source/Core/UICommon/ResourcePack/Manager.cpp | 2 +- .../UICommon/ResourcePack/ResourcePack.cpp | 2 +- Source/Core/VideoCommon/HiresTextures.cpp | 6 ++--- Source/Core/VideoCommon/PostProcessing.cpp | 6 ++--- Source/Core/VideoCommon/TextureUtils.cpp | 2 +- 19 files changed, 87 insertions(+), 48 deletions(-) diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp index a976d573b8d..029b64aa367 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp @@ -5,6 +5,7 @@ #include #include +#include #include #include #include @@ -49,9 +50,13 @@ std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array) return result; } -jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& vector) +jobjectArray SpanToJStringArray(JNIEnv* env, std::span span) { - return VectorToJObjectArray(env, vector, IDCache::GetStringClass(), ToJString); + return SpanToJObjectArray(env, span, IDCache::GetStringClass(), ToJString); +} +jobjectArray SpanToJStringArray(JNIEnv* env, std::span span) +{ + return SpanToJObjectArray(env, span, IDCache::GetStringClass(), ToJString); } bool IsPathAndroidContent(std::string_view uri) @@ -193,13 +198,13 @@ std::vector GetAndroidContentChildNames(std::string_view uri) } std::vector DoFileSearchAndroidContent(std::string_view directory, - const std::vector& extensions, + std::span extensions, bool recursive) { JNIEnv* env = IDCache::GetEnvForThread(); jstring j_directory = ToJString(env, directory); - jobjectArray j_extensions = VectorToJStringArray(env, extensions); + jobjectArray j_extensions = SpanToJStringArray(env, extensions); jobjectArray j_result = reinterpret_cast(env->CallStaticObjectMethod( IDCache::GetContentHandlerClass(), IDCache::GetContentHandlerDoFileSearch(), j_directory, diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.h b/Source/Android/jni/AndroidCommon/AndroidCommon.h index cc867954182..d4f7f0a3d11 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.h +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include #include @@ -14,22 +15,34 @@ std::string GetJString(JNIEnv* env, jstring jstr); jstring ToJString(JNIEnv* env, std::string_view str); std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array); -jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& vector); +jobjectArray SpanToJStringArray(JNIEnv* env, std::span span); +jobjectArray SpanToJStringArray(JNIEnv* env, std::span span); +inline jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& vector) +{ + return SpanToJStringArray(env, vector); +} template -jobjectArray VectorToJObjectArray(JNIEnv* env, const std::vector& vector, jclass clazz, F f) +jobjectArray SpanToJObjectArray(JNIEnv* env, std::span span, jclass clazz, F f) { - const auto vector_size = static_cast(vector.size()); - jobjectArray result = env->NewObjectArray(vector_size, clazz, nullptr); - for (jsize i = 0; i < vector_size; ++i) + const auto span_size = static_cast(span.size()); + jobjectArray result = env->NewObjectArray(span_size, clazz, nullptr); + for (jsize i = 0; i < span_size; ++i) { - jobject obj = f(env, vector[i]); + jobject obj = f(env, span[i]); env->SetObjectArrayElement(result, i, obj); env->DeleteLocalRef(obj); } return result; } +template +inline jobjectArray VectorToJObjectArray(JNIEnv* env, const std::vector& vector, jclass clazz, + F f) +{ + return SpanToJObjectArray(env, std::span(vector), clazz, f); +} + // Returns true if the given path should be opened as Android content instead of a normal file. bool IsPathAndroidContent(std::string_view uri); @@ -55,7 +68,7 @@ std::string GetAndroidContentDisplayName(std::string_view uri); std::vector GetAndroidContentChildNames(std::string_view uri); std::vector DoFileSearchAndroidContent(std::string_view directory, - const std::vector& extensions, + std::span extensions, bool recursive); int GetNetworkIpAddress(); diff --git a/Source/Android/jni/GameList/GameFileCache.cpp b/Source/Android/jni/GameList/GameFileCache.cpp index 27c3b0ef636..39dc524c65e 100644 --- a/Source/Android/jni/GameList/GameFileCache.cpp +++ b/Source/Android/jni/GameList/GameFileCache.cpp @@ -1,6 +1,8 @@ // Copyright 2018 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include +#include #include #include @@ -35,8 +37,10 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_model_GameFileCache_finali JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_model_GameFileCache_getAllGamePaths( JNIEnv* env, jclass, jobjectArray folder_paths, jboolean recursive_scan) { - return VectorToJStringArray( - env, UICommon::FindAllGamePaths(JStringArrayToVector(env, folder_paths), recursive_scan)); + const std::vector paths = JStringArrayToVector(env, folder_paths); + std::vector path_views; + std::ranges::copy(paths, std::back_inserter(path_views)); + return SpanToJStringArray(env, UICommon::FindAllGamePaths(path_views, recursive_scan)); } JNIEXPORT jobjectArray JNICALL diff --git a/Source/Core/Common/FileSearch.cpp b/Source/Core/Common/FileSearch.cpp index 9eb74e4fcf4..1eecb1d36dd 100644 --- a/Source/Core/Common/FileSearch.cpp +++ b/Source/Core/Common/FileSearch.cpp @@ -5,8 +5,6 @@ #include #include -#include -#include #include #include "Common/CommonPaths.h" @@ -21,16 +19,14 @@ #endif #include -#include "Common/CommonFuncs.h" -#include "Common/FileUtil.h" #endif namespace fs = std::filesystem; namespace Common { -std::vector DoFileSearch(const std::vector& directories, - const std::vector& exts, bool recursive) +std::vector DoFileSearch(std::span directories, + std::span exts, bool recursive) { const bool accept_all = exts.empty(); diff --git a/Source/Core/Common/FileSearch.h b/Source/Core/Common/FileSearch.h index ac8fb7bf1b6..ef28e244d37 100644 --- a/Source/Core/Common/FileSearch.h +++ b/Source/Core/Common/FileSearch.h @@ -3,14 +3,36 @@ #pragma once +#include #include +#include #include namespace Common { // Callers can pass empty "exts" to indicate they want all files + directories in results // Otherwise, only files matching the extensions are returned -std::vector DoFileSearch(const std::vector& directories, - const std::vector& exts = {}, +std::vector DoFileSearch(std::span directories, + std::span exts = {}, bool recursive = false); + +inline std::vector DoFileSearch(std::span directories, + std::string_view ext, bool recursive = false) +{ + return DoFileSearch(directories, std::span(&ext, 1), recursive); +} + +inline std::vector DoFileSearch(std::string_view directory, + std::span exts = {}, + bool recursive = false) +{ + return DoFileSearch(std::span(&directory, 1), exts, recursive); +} + +inline std::vector DoFileSearch(std::string_view directory, std::string_view ext, + bool recursive = false) +{ + return DoFileSearch(std::span(&directory, 1), std::span(&ext, 1), recursive); +} + } // namespace Common diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp index 66629d43f1e..8e788576550 100644 --- a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp +++ b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp @@ -134,7 +134,7 @@ std::vector GCMemcardDirectory::GetFileNamesForGameID(const std::st game_code = Common::swap32(reinterpret_cast(game_id.c_str())); std::vector loaded_saves; - for (const std::string& file_name : Common::DoFileSearch({directory}, {".gci"})) + for (const std::string& file_name : Common::DoFileSearch(directory, ".gci")) { File::IOFile gci_file(file_name, "rb"); if (!gci_file) @@ -190,7 +190,7 @@ GCMemcardDirectory::GCMemcardDirectory(const std::string& directory, ExpansionIn } const bool current_game_only = Config::Get(Config::SESSION_GCI_FOLDER_CURRENT_GAME_ONLY); - const std::vector filenames = Common::DoFileSearch({m_save_directory}, {".gci"}); + const std::vector filenames = Common::DoFileSearch(m_save_directory, ".gci"); // split up into files for current games we should definitely load, // and files for other games that we don't care too much about diff --git a/Source/Core/DiscIO/RiivolutionParser.cpp b/Source/Core/DiscIO/RiivolutionParser.cpp index 6fbb4d41c4a..754419f33f0 100644 --- a/Source/Core/DiscIO/RiivolutionParser.cpp +++ b/Source/Core/DiscIO/RiivolutionParser.cpp @@ -399,7 +399,7 @@ std::vector GenerateRiivolutionPatchesFromConfig(const std::string& root_ const std::optional config = ParseConfigFile( fmt::format("{}/riivolution/config/{}.xml", root_directory, game_id.substr(0, 4))); - for (const std::string& path : Common::DoFileSearch({root_directory + "riivolution"}, {".xml"})) + for (const std::string& path : Common::DoFileSearch(root_directory + "riivolution", ".xml")) { std::optional parsed = ParseFile(path); if (!parsed || !parsed->IsValidForGame(game_id, revision, disc_number)) diff --git a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp index 23ce80a489c..ddb9d39ee60 100644 --- a/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/MappingWindow.cpp @@ -534,7 +534,7 @@ void MappingWindow::PopulateProfileSelection() m_profiles_combo->clear(); const std::string profiles_path = m_config->GetUserProfileDirectoryPath(); - for (const auto& filename : Common::DoFileSearch({profiles_path}, {".ini"})) + for (const auto& filename : Common::DoFileSearch(profiles_path, ".ini")) { std::string basename; SplitPath(filename, nullptr, &basename, nullptr); @@ -544,8 +544,7 @@ void MappingWindow::PopulateProfileSelection() m_profiles_combo->insertSeparator(m_profiles_combo->count()); - for (const auto& filename : - Common::DoFileSearch({m_config->GetSysProfileDirectoryPath()}, {".ini"})) + for (const auto& filename : Common::DoFileSearch(m_config->GetSysProfileDirectoryPath(), ".ini")) { std::string basename; SplitPath(filename, nullptr, &basename, nullptr); diff --git a/Source/Core/DolphinQt/RiivolutionBootWidget.cpp b/Source/Core/DolphinQt/RiivolutionBootWidget.cpp index aedb42c903e..ce8dbdbe971 100644 --- a/Source/Core/DolphinQt/RiivolutionBootWidget.cpp +++ b/Source/Core/DolphinQt/RiivolutionBootWidget.cpp @@ -109,7 +109,7 @@ void RiivolutionBootWidget::LoadMatchingXMLs() { const std::string& riivolution_dir = File::GetUserPath(D_RIIVOLUTION_IDX); const auto config = LoadConfigXML(riivolution_dir); - for (const std::string& path : Common::DoFileSearch({riivolution_dir + "riivolution"}, {".xml"})) + for (const std::string& path : Common::DoFileSearch(riivolution_dir + "riivolution", ".xml")) { auto parsed = DiscIO::Riivolution::ParseFile(path); if (!parsed || !parsed->IsValidForGame(m_game_id, m_revision, m_disc_number)) diff --git a/Source/Core/DolphinQt/Settings/InterfacePane.cpp b/Source/Core/DolphinQt/Settings/InterfacePane.cpp index a12434236c2..6703d41107f 100644 --- a/Source/Core/DolphinQt/Settings/InterfacePane.cpp +++ b/Source/Core/DolphinQt/Settings/InterfacePane.cpp @@ -132,8 +132,8 @@ void InterfacePane::CreateUI() combobox_layout->addRow(tr("&Language:"), m_combobox_language); // List available themes - auto theme_paths = - Common::DoFileSearch({File::GetUserPath(D_THEMES_IDX), File::GetSysDirectory() + THEMES_DIR}); + auto theme_paths = Common::DoFileSearch( + {{File::GetUserPath(D_THEMES_IDX), File::GetSysDirectory() + THEMES_DIR}}); std::vector theme_names; theme_names.reserve(theme_paths.size()); std::ranges::transform(theme_paths, std::back_inserter(theme_names), PathToFileName); @@ -147,7 +147,7 @@ void InterfacePane::CreateUI() m_label_userstyle = new QLabel(tr("Style:")); combobox_layout->addRow(m_label_userstyle, m_combobox_userstyle); - auto userstyle_search_results = Common::DoFileSearch({File::GetUserPath(D_STYLES_IDX)}); + auto userstyle_search_results = Common::DoFileSearch(File::GetUserPath(D_STYLES_IDX)); m_combobox_userstyle->addItem(tr("(System)"), static_cast(Settings::StyleType::System)); diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp index af5214bd37a..b02d98eecad 100644 --- a/Source/Core/InputCommon/DynamicInputTextureManager.cpp +++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp @@ -32,7 +32,7 @@ void DynamicInputTextureManager::Load() for (const auto& dynamic_input_directory : dynamic_input_directories) { - const auto json_files = Common::DoFileSearch({dynamic_input_directory}, {".json"}); + const auto json_files = Common::DoFileSearch(dynamic_input_directory, ".json"); for (auto& file : json_files) { m_configuration.emplace_back(file); diff --git a/Source/Core/InputCommon/InputProfile.cpp b/Source/Core/InputCommon/InputProfile.cpp index 0bb452ac1e3..a9471c2765d 100644 --- a/Source/Core/InputCommon/InputProfile.cpp +++ b/Source/Core/InputCommon/InputProfile.cpp @@ -37,7 +37,7 @@ std::vector GetProfilesFromSetting(const std::string& setting, cons const std::string path = root + std::string(StripWhitespace(setting_choice)); if (File::IsDirectory(path)) { - const auto files_under_directory = Common::DoFileSearch({path}, {".ini"}, true); + const auto files_under_directory = Common::DoFileSearch(path, ".ini", true); result.insert(result.end(), files_under_directory.begin(), files_under_directory.end()); } else @@ -57,7 +57,7 @@ std::vector ProfileCycler::GetProfilesForDevice(InputConfig* device { const std::string device_profile_root_location( device_configuration->GetUserProfileDirectoryPath()); - return Common::DoFileSearch({device_profile_root_location}, {".ini"}, true); + return Common::DoFileSearch(device_profile_root_location, ".ini", true); } std::string ProfileCycler::GetProfile(CycleDirection cycle_direction, int& profile_index, diff --git a/Source/Core/UICommon/GameFileCache.cpp b/Source/Core/UICommon/GameFileCache.cpp index f72f47c11ee..4c93fb76402 100644 --- a/Source/Core/UICommon/GameFileCache.cpp +++ b/Source/Core/UICommon/GameFileCache.cpp @@ -28,12 +28,12 @@ namespace UICommon { static constexpr u32 CACHE_REVISION = 26; // Last changed in PR 10084 -std::vector FindAllGamePaths(const std::vector& directories_to_scan, +std::vector FindAllGamePaths(std::span directories_to_scan, bool recursive_scan) { - static const std::vector search_extensions = { - ".gcm", ".tgc", ".bin", ".iso", ".ciso", ".gcz", ".wbfs", - ".wia", ".rvz", ".nfs", ".wad", ".dol", ".elf", ".json"}; + constexpr auto search_extensions = + std::to_array({".gcm", ".tgc", ".bin", ".iso", ".ciso", ".gcz", ".wbfs", + ".wia", ".rvz", ".nfs", ".wad", ".dol", ".elf", ".json"}); // TODO: We could process paths iteratively as they are found return Common::DoFileSearch(directories_to_scan, search_extensions, recursive_scan); diff --git a/Source/Core/UICommon/GameFileCache.h b/Source/Core/UICommon/GameFileCache.h index 5544b3a1432..4c4ab155575 100644 --- a/Source/Core/UICommon/GameFileCache.h +++ b/Source/Core/UICommon/GameFileCache.h @@ -19,7 +19,7 @@ namespace UICommon { class GameFile; -std::vector FindAllGamePaths(const std::vector& directories_to_scan, +std::vector FindAllGamePaths(std::span directories_to_scan, bool recursive_scan); class GameFileCache diff --git a/Source/Core/UICommon/ResourcePack/Manager.cpp b/Source/Core/UICommon/ResourcePack/Manager.cpp index b1fd555c859..f3abf44ebc7 100644 --- a/Source/Core/UICommon/ResourcePack/Manager.cpp +++ b/Source/Core/UICommon/ResourcePack/Manager.cpp @@ -32,7 +32,7 @@ bool Init() { packs.clear(); const std::vector pack_list = - Common::DoFileSearch({File::GetUserPath(D_RESOURCEPACK_IDX)}, {".zip"}); + Common::DoFileSearch(File::GetUserPath(D_RESOURCEPACK_IDX), ".zip"); Common::IniFile file = GetPackConfig(); diff --git a/Source/Core/UICommon/ResourcePack/ResourcePack.cpp b/Source/Core/UICommon/ResourcePack/ResourcePack.cpp index 73f271c6bcf..f755dae6f59 100644 --- a/Source/Core/UICommon/ResourcePack/ResourcePack.cpp +++ b/Source/Core/UICommon/ResourcePack/ResourcePack.cpp @@ -305,7 +305,7 @@ bool ResourcePack::Uninstall(const std::string& path) while (dir.length() > (path + TEXTURE_PATH).length()) { - auto is_empty = Common::DoFileSearch({dir}).empty(); + const auto is_empty = Common::DoFileSearch(dir).empty(); if (is_empty) File::DeleteDir(dir); diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 12f59f5ff52..5fb90a9416e 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -93,7 +93,7 @@ void HiresTexture::Update() const std::string& game_id = SConfig::GetInstance().GetGameID(); const std::set texture_directories = GetTextureDirectoriesWithGameId(File::GetUserPath(D_HIRESTEXTURES_IDX), game_id); - const std::vector extensions{".png", ".dds"}; + constexpr auto extensions = std::to_array({".png", ".dds"}); for (const auto& texture_directory : texture_directories) { @@ -101,7 +101,7 @@ void HiresTexture::Update() s_file_library->Watch(texture_directory); const auto texture_paths = - Common::DoFileSearch({texture_directory}, extensions, /*recursive*/ true); + Common::DoFileSearch(texture_directory, extensions, /*recursive*/ true); bool failed_insert = false; for (auto& path : texture_paths) @@ -227,7 +227,7 @@ std::set GetTextureDirectoriesWithGameId(const std::string& root_di }; // Look for any other directories that might be specific to the given gameid - const auto files = Common::DoFileSearch({root_directory}, {".txt"}, true); + const auto files = Common::DoFileSearch(root_directory, ".txt", true); for (const auto& file : files) { if (match_gameid_or_all(file)) diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp index 94da639bcae..e8111879b47 100644 --- a/Source/Core/VideoCommon/PostProcessing.cpp +++ b/Source/Core/VideoCommon/PostProcessing.cpp @@ -387,9 +387,9 @@ PostProcessing::~PostProcessing() static std::vector GetShaders(const std::string& sub_dir = "") { std::vector paths = - Common::DoFileSearch({File::GetUserPath(D_SHADERS_IDX) + sub_dir, - File::GetSysDirectory() + SHADERS_DIR DIR_SEP + sub_dir}, - {".glsl"}); + Common::DoFileSearch({{File::GetUserPath(D_SHADERS_IDX) + sub_dir, + File::GetSysDirectory() + SHADERS_DIR DIR_SEP + sub_dir}}, + ".glsl"); std::vector result; for (std::string path : paths) { diff --git a/Source/Core/VideoCommon/TextureUtils.cpp b/Source/Core/VideoCommon/TextureUtils.cpp index 907b1ac523f..bd415508772 100644 --- a/Source/Core/VideoCommon/TextureUtils.cpp +++ b/Source/Core/VideoCommon/TextureUtils.cpp @@ -58,7 +58,7 @@ void TextureDumper::DumpTexture(const ::AbstractTexture& texture, std::string ba if (!File::IsDirectory(dump_dir)) File::CreateDir(dump_dir); - for (auto& filename : Common::DoFileSearch({dump_dir}, {".png"}, true)) + for (auto& filename : Common::DoFileSearch(dump_dir, ".png", true)) { std::string name; SplitPath(filename, nullptr, &name, nullptr); From 972ec95cb3713296128bbbf56bcd5a265efbd544 Mon Sep 17 00:00:00 2001 From: Sintendo <3380580+Sintendo@users.noreply.github.com> Date: Wed, 24 Dec 2025 10:14:24 +0100 Subject: [PATCH 2/3] Clean includes --- Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp | 2 -- Source/Core/DolphinQt/Settings/InterfacePane.cpp | 3 --- Source/Core/InputCommon/DynamicInputTextureManager.cpp | 2 -- Source/Core/InputCommon/InputProfile.cpp | 2 +- Source/Core/UICommon/GameFileCache.cpp | 3 --- Source/Core/VideoCommon/HiresTextures.cpp | 6 ------ Source/Core/VideoCommon/PostProcessing.cpp | 1 - 7 files changed, 1 insertion(+), 18 deletions(-) diff --git a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp index 8e788576550..9d3639ed044 100644 --- a/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp +++ b/Source/Core/Core/HW/GCMemcard/GCMemcardDirectory.cpp @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -26,7 +25,6 @@ #include "Common/MsgHandler.h" #include "Common/StringUtil.h" #include "Common/Thread.h" -#include "Common/Timer.h" #include "Core/Config/MainSettings.h" #include "Core/Config/SessionSettings.h" diff --git a/Source/Core/DolphinQt/Settings/InterfacePane.cpp b/Source/Core/DolphinQt/Settings/InterfacePane.cpp index 6703d41107f..c9b5cfd89df 100644 --- a/Source/Core/DolphinQt/Settings/InterfacePane.cpp +++ b/Source/Core/DolphinQt/Settings/InterfacePane.cpp @@ -16,7 +16,6 @@ #include "Common/CommonPaths.h" #include "Common/FileSearch.h" #include "Common/FileUtil.h" -#include "Common/MsgHandler.h" #include "Common/StringUtil.h" #include "Core/AchievementManager.h" @@ -34,8 +33,6 @@ #include "DolphinQt/QtUtils/SignalBlocking.h" #include "DolphinQt/Settings.h" -#include "UICommon/GameFile.h" - static ConfigStringChoice* MakeLanguageComboBox() { using QPair = std::pair; diff --git a/Source/Core/InputCommon/DynamicInputTextureManager.cpp b/Source/Core/InputCommon/DynamicInputTextureManager.cpp index b02d98eecad..be5c9634099 100644 --- a/Source/Core/InputCommon/DynamicInputTextureManager.cpp +++ b/Source/Core/InputCommon/DynamicInputTextureManager.cpp @@ -9,12 +9,10 @@ #include "Common/FileSearch.h" #include "Common/FileUtil.h" #include "Core/ConfigManager.h" -#include "Core/Core.h" #include "InputCommon/DynamicInputTextures/DITConfiguration.h" #include "InputCommon/ImageOperations.h" #include "VideoCommon/HiresTextures.h" -#include "VideoCommon/TextureCacheBase.h" namespace InputCommon { diff --git a/Source/Core/InputCommon/InputProfile.cpp b/Source/Core/InputCommon/InputProfile.cpp index a9471c2765d..f483e8a9c37 100644 --- a/Source/Core/InputCommon/InputProfile.cpp +++ b/Source/Core/InputCommon/InputProfile.cpp @@ -15,8 +15,8 @@ #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/Wiimote.h" -#include "Core/HotkeyManager.h" +#include "InputCommon/ControllerEmu/ControllerEmu.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" #include "InputCommon/InputConfig.h" diff --git a/Source/Core/UICommon/GameFileCache.cpp b/Source/Core/UICommon/GameFileCache.cpp index 4c93fb76402..37a130599d2 100644 --- a/Source/Core/UICommon/GameFileCache.cpp +++ b/Source/Core/UICommon/GameFileCache.cpp @@ -5,10 +5,7 @@ #include #include -#include -#include #include -#include #include #include #include diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index 5fb90a9416e..1e423a8aa69 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -3,15 +3,11 @@ #include "VideoCommon/HiresTextures.h" -#include #include -#include #include #include -#include #include #include -#include #include #include @@ -21,10 +17,8 @@ #include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/StringUtil.h" -#include "Core/Config/GraphicsSettings.h" #include "Core/ConfigManager.h" #include "Core/System.h" -#include "VideoCommon/Assets/CustomAsset.h" #include "VideoCommon/Assets/DirectFilesystemAssetLibrary.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/Resources/CustomResourceManager.h" diff --git a/Source/Core/VideoCommon/PostProcessing.cpp b/Source/Core/VideoCommon/PostProcessing.cpp index e8111879b47..804c24eef6c 100644 --- a/Source/Core/VideoCommon/PostProcessing.cpp +++ b/Source/Core/VideoCommon/PostProcessing.cpp @@ -24,7 +24,6 @@ #include "VideoCommon/AbstractPipeline.h" #include "VideoCommon/AbstractShader.h" #include "VideoCommon/AbstractTexture.h" -#include "VideoCommon/FramebufferManager.h" #include "VideoCommon/Present.h" #include "VideoCommon/ShaderCache.h" #include "VideoCommon/ShaderCompileUtils.h" From 60ca0626dfc2a59cc2e8145d0ee5c7d95f7d0ab5 Mon Sep 17 00:00:00 2001 From: Sintendo <3380580+Sintendo@users.noreply.github.com> Date: Fri, 26 Dec 2025 21:57:28 +0100 Subject: [PATCH 3/3] Remove VectorToJStringArray --- Source/Android/jni/AndroidCommon/AndroidCommon.h | 4 ---- Source/Android/jni/Config/PostProcessing.cpp | 6 +++--- Source/Android/jni/GameList/GameFileCache.cpp | 2 +- .../InputCommon/ControllerInterface/Android/Android.cpp | 2 +- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.h b/Source/Android/jni/AndroidCommon/AndroidCommon.h index d4f7f0a3d11..e04180ef20b 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.h +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.h @@ -17,10 +17,6 @@ jstring ToJString(JNIEnv* env, std::string_view str); std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array); jobjectArray SpanToJStringArray(JNIEnv* env, std::span span); jobjectArray SpanToJStringArray(JNIEnv* env, std::span span); -inline jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& vector) -{ - return SpanToJStringArray(env, vector); -} template jobjectArray SpanToJObjectArray(JNIEnv* env, std::span span, jclass clazz, F f) diff --git a/Source/Android/jni/Config/PostProcessing.cpp b/Source/Android/jni/Config/PostProcessing.cpp index ea1b9d8ad4a..5576c2d314a 100644 --- a/Source/Android/jni/Config/PostProcessing.cpp +++ b/Source/Android/jni/Config/PostProcessing.cpp @@ -15,20 +15,20 @@ JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_features_settings_model_PostProcessing_getShaderList(JNIEnv* env, jclass) { - return VectorToJStringArray(env, VideoCommon::PostProcessing::GetShaderList()); + return SpanToJStringArray(env, VideoCommon::PostProcessing::GetShaderList()); } JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_features_settings_model_PostProcessing_getAnaglyphShaderList( JNIEnv* env, jclass) { - return VectorToJStringArray(env, VideoCommon::PostProcessing::GetAnaglyphShaderList()); + return SpanToJStringArray(env, VideoCommon::PostProcessing::GetAnaglyphShaderList()); } JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_features_settings_model_PostProcessing_getPassiveShaderList( JNIEnv* env, jclass) { - return VectorToJStringArray(env, VideoCommon::PostProcessing::GetPassiveShaderList()); + return SpanToJStringArray(env, VideoCommon::PostProcessing::GetPassiveShaderList()); } } diff --git a/Source/Android/jni/GameList/GameFileCache.cpp b/Source/Android/jni/GameList/GameFileCache.cpp index 39dc524c65e..c0a78c8cee2 100644 --- a/Source/Android/jni/GameList/GameFileCache.cpp +++ b/Source/Android/jni/GameList/GameFileCache.cpp @@ -46,7 +46,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_model_GameFileCach JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_model_GameFileCache_getIsoPaths(JNIEnv* env, jclass) { - return VectorToJStringArray(env, Config::GetIsoPaths()); + return SpanToJStringArray(env, Config::GetIsoPaths()); } JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_model_GameFileCache_setIsoPaths( diff --git a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp index 48eebbb7f6d..a0a3f7c8c28 100644 --- a/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Android/Android.cpp @@ -1173,7 +1173,7 @@ JNIEXPORT jobjectArray JNICALL Java_org_dolphinemu_dolphinemu_features_input_model_ControllerInterface_getAllDeviceStrings( JNIEnv* env, jclass) { - return VectorToJStringArray(env, g_controller_interface.GetAllDeviceStrings()); + return SpanToJStringArray(env, g_controller_interface.GetAllDeviceStrings()); } JNIEXPORT jobject JNICALL