From df674f2dfca74a0f07efba090eae56c17a82b31f Mon Sep 17 00:00:00 2001 From: Mr-Wiseguy Date: Sat, 26 Apr 2025 17:19:17 -0400 Subject: [PATCH] Remove more redundant mod scanning and fix mods being scanned during gameplay --- include/recomp_ui.h | 2 +- src/ui/ui_config.cpp | 2 +- src/ui/ui_mod_menu.cpp | 15 +++++++++------ src/ui/ui_mod_menu.h | 5 +++-- src/ui/ui_state.cpp | 2 -- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/recomp_ui.h b/include/recomp_ui.h index 56663ab..605d10a 100644 --- a/include/recomp_ui.h +++ b/include/recomp_ui.h @@ -111,7 +111,7 @@ namespace recompui { ); void close_prompt(); bool is_prompt_open(); - void update_mod_list(); + void update_mod_list(bool scan_mods = true); void process_game_started(); void apply_color_hack(); diff --git a/src/ui/ui_config.cpp b/src/ui/ui_config.cpp index e4f583a..f235413 100644 --- a/src/ui/ui_config.cpp +++ b/src/ui/ui_config.cpp @@ -464,7 +464,7 @@ public: } void load_document() override { config_context = recompui::create_context(zelda64::get_asset_path("config_menu.rml")); - recompui::update_mod_list(); + recompui::update_mod_list(false); } void register_events(recompui::UiEventListenerInstancer& listener) override { recompui::register_event(listener, "apply_options", diff --git a/src/ui/ui_mod_menu.cpp b/src/ui/ui_mod_menu.cpp index cd3eea2..818932e 100644 --- a/src/ui/ui_mod_menu.cpp +++ b/src/ui/ui_mod_menu.cpp @@ -246,12 +246,14 @@ void ModEntrySpacer::set_target_height(float target_height, bool animate_to_targ // ModMenu -void ModMenu::refresh_mods() { +void ModMenu::refresh_mods(bool scan_mods) { for (const std::string &thumbnail : loaded_thumbnails) { recompui::release_image(thumbnail); } - recomp::mods::scan_mods(); + if (scan_mods) { + recomp::mods::scan_mods(); + } mod_details = recomp::mods::get_all_mod_details(game_mod_id); create_mod_list(); } @@ -606,8 +608,9 @@ void ModMenu::create_mod_list() { void ModMenu::process_event(const Event &e) { if (e.type == EventType::Update) { if (mods_dirty) { - refresh_mods(); + refresh_mods(mod_scan_queued); mods_dirty = false; + mod_scan_queued = false; } if (ultramodern::is_game_started()) { install_mods_button->set_enabled(false); @@ -686,7 +689,7 @@ ModMenu::ModMenu(Element *parent) : Element(parent) { footer_spacer->set_flex(1.0f, 0.0f); refresh_button = context.create_element