Mercurial > repos > blastem
diff blastem.c @ 1595:360d5bab199f
Update controller config when changed in UI without restart
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 06 Jul 2018 17:39:59 -0700 |
parents | 24508cb54f87 |
children | b7ecd0d6a77b 9b8fe6729877 |
line wrap: on
line diff
--- a/blastem.c Fri Jun 29 09:33:23 2018 -0700 +++ b/blastem.c Fri Jul 06 17:39:59 2018 -0700 @@ -248,9 +248,10 @@ return save_dir; } -void setup_saves(system_media *media, rom_info *info, system_header *context) +void setup_saves(system_media *media, system_header *context) { static uint8_t persist_save_registered; + rom_info *info = &context->info; char *save_dir = get_save_dir(info->is_save_lock_on ? media->chain : media); char const *parts[] = {save_dir, PATH_SEP, info->save_type == SAVE_I2C ? "save.eeprom" : info->save_type == SAVE_NOR ? "save.nor" : "save.sram"}; free(save_filename); @@ -281,6 +282,9 @@ void apply_updated_config(void) { render_config_updated(); + if (current_system && current_system->config_updated) { + current_system->config_updated(current_system); + } } static void on_drag_drop(const char *filename) @@ -377,9 +381,8 @@ if (stype == SYSTEM_UNKNOWN) { fatal_error("Failed to detect system type for %s\n", path); } - rom_info info; //allocate new system context - game_system = alloc_config_system(stype, &cart, opts, force_region, &info); + game_system = alloc_config_system(stype, &cart, opts, force_region); if (!game_system) { fatal_error("Failed to configure emulated machine for %s\n", path); } @@ -387,9 +390,8 @@ menu_system->next_context = game_system; } game_system->next_context = menu_system; - setup_saves(&cart, &info, game_system); - update_title(info.name); - free(info.name); + setup_saves(&cart, game_system); + update_title(game_system->info.name); } int main(int argc, char ** argv) @@ -613,15 +615,13 @@ if (stype == SYSTEM_UNKNOWN) { fatal_error("Failed to detect system type for %s\n", romfname); } - rom_info info; - current_system = alloc_config_system(stype, &cart, menu ? 0 : opts, force_region, &info); + current_system = alloc_config_system(stype, &cart, menu ? 0 : opts, force_region); if (!current_system) { fatal_error("Failed to configure emulated machine for %s\n", romfname); } - setup_saves(&cart, &info, current_system); - update_title(info.name); - free(info.name); + setup_saves(&cart, current_system); + update_title(current_system->info.name); if (menu) { menu_system = current_system; } else {