From 3016edce0afc65adc5aae8f540b2bceb00d35d11 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 10 Apr 2018 04:00:01 +0200 Subject: [PATCH] Move retroarch.h dependencies out of core_info.c --- core_info.c | 13 +++++++------ core_info.h | 3 ++- menu/menu_displaylist.c | 11 ++++++++++- tasks/task_content.c | 9 ++++++++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/core_info.c b/core_info.c index 32f29e8f9f..71d00a8c49 100644 --- a/core_info.c +++ b/core_info.c @@ -27,7 +27,6 @@ #include "config.h" #endif -#include "retroarch.h" #include "verbosity.h" #include "config.def.h" @@ -515,7 +514,8 @@ static core_info_t *core_info_find_internal( static bool core_info_list_update_missing_firmware_internal( core_info_list_t *core_info_list, const char *core, - const char *systemdir) + const char *systemdir, + bool *set_missing_bios) { size_t i; core_info_t *info = NULL; @@ -532,7 +532,6 @@ static bool core_info_list_update_missing_firmware_internal( path = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); path[0] = '\0'; - rarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); for (i = 0; i < info->firmware_count; i++) { @@ -544,7 +543,7 @@ static bool core_info_list_update_missing_firmware_internal( info->firmware[i].missing = !filestream_exists(path); if (info->firmware[i].missing && !info->firmware[i].optional) { - rarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); + *set_missing_bios = true; RARCH_WARN("Firmware missing: %s\n", info->firmware[i].path); } } @@ -648,13 +647,15 @@ bool core_info_get_list(core_info_list_t **core) return true; } -bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info) +bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info, + bool *set_missing_bios) { if (!info) return false; return core_info_list_update_missing_firmware_internal( core_info_curr_list, - info->path, info->directory.system); + info->path, info->directory.system, + set_missing_bios); } bool core_info_load(core_info_ctx_find_t *info) diff --git a/core_info.h b/core_info.h index 57e6c8bf2f..b1b6b2f102 100644 --- a/core_info.h +++ b/core_info.h @@ -113,7 +113,8 @@ bool core_info_init_list(const char *path_info, const char *dir_cores); bool core_info_get_list(core_info_list_t **core); -bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info); +bool core_info_list_update_missing_firmware(core_info_ctx_firmware_t *info, + bool *set_missing_bios); bool core_info_find(core_info_ctx_find_t *info, const char *name); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 1b0176c11c..043fcb9b6e 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -285,12 +285,21 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info) if (core_info->firmware_count > 0) { core_info_ctx_firmware_t firmware_info; + bool update_missing_firmware = false; + bool set_missing_firmware = false; settings_t *settings = config_get_ptr(); firmware_info.path = core_info->path; firmware_info.directory.system = settings->paths.directory_system; - if (core_info_list_update_missing_firmware(&firmware_info)) + rarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); + + update_missing_firmware = core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); + + if (set_missing_firmware) + rarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); + + if (update_missing_firmware) { fill_pathname_noext(tmp, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE), diff --git a/tasks/task_content.c b/tasks/task_content.c index 2c5f250482..273caa570f 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1009,6 +1009,7 @@ static bool firmware_update_status( content_information_ctx_t *content_ctx) { core_info_ctx_firmware_t firmware_info; + bool set_missing_firmware = false; core_info_t *core_info = NULL; size_t s_size = PATH_MAX_LENGTH * sizeof(char); char *s = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); @@ -1032,7 +1033,13 @@ static bool firmware_update_status( RARCH_LOG("Updating firmware status for: %s on %s\n", core_info->path, firmware_info.directory.system); - core_info_list_update_missing_firmware(&firmware_info); + + rarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL); + + core_info_list_update_missing_firmware(&firmware_info, &set_missing_firmware); + + if (set_missing_firmware) + rarch_ctl(RARCH_CTL_SET_MISSING_BIOS, NULL); if( content_ctx->bios_is_missing &&