Move retroarch.h dependencies out of core_info.c

This commit is contained in:
twinaphex 2018-04-10 04:00:01 +02:00
parent 00cc4ca7aa
commit 3016edce0a
4 changed files with 27 additions and 9 deletions

View File

@ -27,7 +27,6 @@
#include "config.h" #include "config.h"
#endif #endif
#include "retroarch.h"
#include "verbosity.h" #include "verbosity.h"
#include "config.def.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( static bool core_info_list_update_missing_firmware_internal(
core_info_list_t *core_info_list, core_info_list_t *core_info_list,
const char *core, const char *core,
const char *systemdir) const char *systemdir,
bool *set_missing_bios)
{ {
size_t i; size_t i;
core_info_t *info = NULL; 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 = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));
path[0] = '\0'; path[0] = '\0';
rarch_ctl(RARCH_CTL_UNSET_MISSING_BIOS, NULL);
for (i = 0; i < info->firmware_count; i++) 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); info->firmware[i].missing = !filestream_exists(path);
if (info->firmware[i].missing && !info->firmware[i].optional) 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); 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; 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) if (!info)
return false; return false;
return core_info_list_update_missing_firmware_internal( return core_info_list_update_missing_firmware_internal(
core_info_curr_list, 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) bool core_info_load(core_info_ctx_find_t *info)

View File

@ -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_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); bool core_info_find(core_info_ctx_find_t *info, const char *name);

View File

@ -285,12 +285,21 @@ static int menu_displaylist_parse_core_info(menu_displaylist_info_t *info)
if (core_info->firmware_count > 0) if (core_info->firmware_count > 0)
{ {
core_info_ctx_firmware_t firmware_info; core_info_ctx_firmware_t firmware_info;
bool update_missing_firmware = false;
bool set_missing_firmware = false;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
firmware_info.path = core_info->path; firmware_info.path = core_info->path;
firmware_info.directory.system = settings->paths.directory_system; 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, fill_pathname_noext(tmp,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CORE_INFO_FIRMWARE),

View File

@ -1009,6 +1009,7 @@ static bool firmware_update_status(
content_information_ctx_t *content_ctx) content_information_ctx_t *content_ctx)
{ {
core_info_ctx_firmware_t firmware_info; core_info_ctx_firmware_t firmware_info;
bool set_missing_firmware = false;
core_info_t *core_info = NULL; core_info_t *core_info = NULL;
size_t s_size = PATH_MAX_LENGTH * sizeof(char); size_t s_size = PATH_MAX_LENGTH * sizeof(char);
char *s = (char*)malloc(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", RARCH_LOG("Updating firmware status for: %s on %s\n",
core_info->path, core_info->path,
firmware_info.directory.system); 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( if(
content_ctx->bios_is_missing && content_ctx->bios_is_missing &&