From 1b3789edde8956614dc6341220908de11324bd7d Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 29 Nov 2016 22:21:44 -0500 Subject: [PATCH 1/2] better firmware checking --- menu/cbs/menu_cbs_ok.c | 8 -------- runloop.c | 21 +++++++++++++++++---- runloop.h | 2 ++ tasks/task_content.c | 9 +++++++++ 4 files changed, 28 insertions(+), 12 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index 5a7e307929..861831824d 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -856,14 +856,6 @@ static int generic_action_ok_file_load(const char *corepath, const char *fullpat content_ctx_info_t content_info = {0}; settings_t *settings = config_get_ptr(); - if(runloop_ctl(RUNLOOP_CTL_IS_MISSING_BIOS, NULL) - && !string_is_empty(settings->directory.system) - && content_enum_idx == CONTENT_MODE_LOAD_CONTENT_WITH_CURRENT_CORE_FROM_MENU) - { - runloop_msg_queue_push(msg_hash_to_str(MSG_FIRMWARE), 200, 100, true); - RARCH_LOG(msg_hash_to_str(MSG_FIRMWARE)); - return 0; - } if (!task_push_content_load_default( corepath, fullpath, &content_info, diff --git a/runloop.c b/runloop.c index 721aeed46d..5c614f9789 100644 --- a/runloop.c +++ b/runloop.c @@ -140,11 +140,24 @@ void update_firmware_status() core_info_t *core_info = NULL; settings_t *settings = config_get_ptr(); core_info_ctx_firmware_t firmware_info; - core_info_get_current_core(&core_info); - firmware_info.path = core_info->path; - firmware_info.directory.system = settings->directory.system; - core_info_list_update_missing_firmware(&firmware_info); + + if (core_info && settings) + { + firmware_info.path = core_info->path; + if (!string_is_empty(settings->directory.system)) + firmware_info.directory.system = settings->directory.system; + else + { + char s[PATH_MAX_LENGTH]; + strlcpy(s, path_get(RARCH_PATH_CONTENT) ,sizeof(s)); + path_basedir(s); + firmware_info.directory.system = s; + } + 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); + } } void runloop_msg_queue_push(const char *msg, diff --git a/runloop.h b/runloop.h index 35fada6eb1..76fb50a6ce 100644 --- a/runloop.h +++ b/runloop.h @@ -223,6 +223,8 @@ char* runloop_msg_queue_pull(void); bool runloop_ctl(enum runloop_ctl_state state, void *data); +void update_firmware_status(); + RETRO_END_DECLS #endif diff --git a/tasks/task_content.c b/tasks/task_content.c index 343ba346f1..0483686318 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1241,6 +1241,9 @@ bool task_push_content_load_default( #endif case CONTENT_MODE_LOAD_CONTENT_WITH_FFMPEG_CORE_FROM_MENU: case CONTENT_MODE_LOAD_CONTENT_WITH_IMAGEVIEWER_CORE_FROM_MENU: + update_firmware_status(); + if(runloop_ctl(RUNLOOP_CTL_IS_MISSING_BIOS, NULL)) + goto skip; if (!task_load_content(content_info, loading_from_menu, mode)) goto error; break; @@ -1289,4 +1292,10 @@ error: } #endif return false; + +skip: + runloop_msg_queue_push(msg_hash_to_str(MSG_FIRMWARE), 100, 1000, true); + RARCH_LOG(msg_hash_to_str(MSG_FIRMWARE)); + + return true; } From 4f760352f4b5669946bc82ccacd759bfc5e08c8a Mon Sep 17 00:00:00 2001 From: radius Date: Tue, 29 Nov 2016 22:23:15 -0500 Subject: [PATCH 2/2] don't show the message for ten seconds --- tasks/task_content.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 0483686318..b15dc86236 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -1294,7 +1294,7 @@ error: return false; skip: - runloop_msg_queue_push(msg_hash_to_str(MSG_FIRMWARE), 100, 1000, true); + runloop_msg_queue_push(msg_hash_to_str(MSG_FIRMWARE), 100, 500, true); RARCH_LOG(msg_hash_to_str(MSG_FIRMWARE)); return true;