From 04605f085c0038ec55eae818f88193f9bbc757fd Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 30 Nov 2015 21:56:35 +0100 Subject: [PATCH] Create RUNLOOP_CTL_{PERFCNT} --- configuration.c | 18 ++++++++++++++++-- menu/menu_displaylist.c | 11 +---------- menu/menu_setting.c | 3 +-- performance.c | 19 ++++++++----------- runloop.c | 14 ++++++++++++++ runloop.h | 6 +++++- 6 files changed, 45 insertions(+), 26 deletions(-) diff --git a/configuration.c b/configuration.c index ec8e62a4bf..f32803d855 100644 --- a/configuration.c +++ b/configuration.c @@ -1550,7 +1550,17 @@ static bool config_load_file(const char *path, bool set_defaults) } } - CONFIG_GET_BOOL_BASE(conf, global, perfcnt_enable, "perfcnt_enable"); + { + bool tmp_bool; + char tmp[64] = {0}; + strlcpy(tmp, "perfcnt_enable", sizeof(tmp)); + config_get_bool(conf, tmp, &tmp_bool); + + if (tmp_bool) + runloop_ctl(RUNLOOP_CTL_SET_PERFCNT_ENABLE, NULL); + else + runloop_ctl(RUNLOOP_CTL_UNSET_PERFCNT_ENABLE, NULL); + } #if TARGET_OS_IPHONE CONFIG_GET_BOOL_BASE(conf, settings, input.small_keyboard_enable, "small_keyboard_enable"); @@ -2808,7 +2818,11 @@ bool config_save_file(const char *path) settings->sort_savestates_enable); config_set_int(conf, "libretro_log_level", settings->libretro_log_level); config_set_bool(conf, "log_verbosity", *retro_main_verbosity()); - config_set_bool(conf, "perfcnt_enable", global->perfcnt_enable); + + { + bool perfcnt_enable = runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL); + config_set_bool(conf, "perfcnt_enable", perfcnt_enable); + } #if TARGET_OS_IPHONE config_set_bool(conf, "small_keyboard_enable", settings->input.small_keyboard_enable); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 68dc815fba..947f5fd61d 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1827,7 +1827,6 @@ static int menu_displaylist_parse_horizontal_content_actions(menu_displaylist_in static int menu_displaylist_parse_information_list(menu_displaylist_info_t *info) { - global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); menu_entries_push(info->list, @@ -1849,7 +1848,7 @@ static int menu_displaylist_parse_information_list(menu_displaylist_info_t *info MENU_SETTING_ACTION, 0, 0); #endif - if (global->perfcnt_enable) + if (runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL)) { menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_FRONTEND_COUNTERS), @@ -1873,10 +1872,6 @@ static int menu_displaylist_parse_information_list(menu_displaylist_info_t *info static int menu_displaylist_parse_add_content_list(menu_displaylist_info_t *info) { - global_t *global = global_get_ptr(); - - (void)global; - #ifdef HAVE_NETWORKING menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_DOWNLOAD_CORE_CONTENT), @@ -1901,10 +1896,6 @@ static int menu_displaylist_parse_add_content_list(menu_displaylist_info_t *info static int menu_displaylist_parse_scan_directory_list(menu_displaylist_info_t *info) { - global_t *global = global_get_ptr(); - - (void)global; - #ifdef HAVE_LIBRETRODB menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_SCAN_DIRECTORY), diff --git a/menu/menu_setting.c b/menu/menu_setting.c index dede4168ef..6e696bc5b2 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -3887,7 +3887,6 @@ static bool setting_append_list_logging_options( rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; settings_t *settings = config_get_ptr(); - global_t *global = global_get_ptr(); START_GROUP(list, list_info, &group_info, menu_hash_to_str(MENU_LABEL_VALUE_LOGGING_SETTINGS), parent_group); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED); @@ -3950,7 +3949,7 @@ static bool setting_append_list_logging_options( CONFIG_BOOL( list, list_info, - &global->perfcnt_enable, + runloop_perfcnt_enabled(), menu_hash_to_str(MENU_LABEL_PERFCNT_ENABLE), menu_hash_to_str(MENU_LABEL_VALUE_PERFCNT_ENABLE), false, diff --git a/performance.c b/performance.c index f1338a725a..5a02a89d27 100644 --- a/performance.c +++ b/performance.c @@ -136,10 +136,11 @@ unsigned retro_get_perf_count_libretro(void) void rarch_perf_register(struct retro_perf_counter *perf) { - global_t *global = global_get_ptr(); - - if (!global->perfcnt_enable || perf->registered - || perf_ptr_rarch >= MAX_COUNTERS) + if ( + !runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL) + || perf->registered + || perf_ptr_rarch >= MAX_COUNTERS + ) return; perf_counters_rarch[perf_ptr_rarch++] = perf; @@ -179,9 +180,7 @@ static void log_counters(struct retro_perf_counter **counters, unsigned num) void rarch_perf_log(void) { - global_t *global = global_get_ptr(); - - if (!global->perfcnt_enable) + if (!runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL)) return; RARCH_LOG("[PERF]: Performance counters (RetroArch):\n"); @@ -592,8 +591,7 @@ int rarch_perf_init(struct retro_perf_counter *perf, const char *name) void retro_perf_start(struct retro_perf_counter *perf) { - global_t *global = global_get_ptr(); - if (!global->perfcnt_enable || !perf) + if (!runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL) || !perf) return; perf->call_cnt++; @@ -602,8 +600,7 @@ void retro_perf_start(struct retro_perf_counter *perf) void retro_perf_stop(struct retro_perf_counter *perf) { - global_t *global = global_get_ptr(); - if (!global->perfcnt_enable || !perf) + if (!runloop_ctl(RUNLOOP_CTL_IS_PERFCNT_ENABLE, NULL) || !perf) return; perf->total += retro_get_perf_counter() - perf->start; diff --git a/runloop.c b/runloop.c index 174f223b6d..ed4a8ceb8f 100644 --- a/runloop.c +++ b/runloop.c @@ -58,6 +58,7 @@ static struct global g_extern; +static bool runloop_perfcnt_enable; static bool main_exec; static bool main_core_shutdown_initiated; static bool main_is_idle; @@ -450,6 +451,14 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) switch (state) { + case RUNLOOP_CTL_SET_PERFCNT_ENABLE: + runloop_perfcnt_enable = true; + break; + case RUNLOOP_CTL_UNSET_PERFCNT_ENABLE: + runloop_perfcnt_enable = false; + break; + case RUNLOOP_CTL_IS_PERFCNT_ENABLE: + return runloop_perfcnt_enable; case RUNLOOP_CTL_SET_WINDOWED_SCALE: { unsigned *idx = (unsigned*)data; @@ -1214,3 +1223,8 @@ void data_runloop_osd_msg(const char *msg, size_t len) { rarch_main_msg_queue_push(msg, 1, 10, true); } + +bool *runloop_perfcnt_enabled(void) +{ + return &runloop_perfcnt_enable; +} diff --git a/runloop.h b/runloop.h index ec1aac78de..0b28c14a13 100644 --- a/runloop.h +++ b/runloop.h @@ -56,6 +56,9 @@ enum runloop_ctl_state RUNLOOP_CTL_GLOBAL_FREE, RUNLOOP_CTL_SET_CORE_SHUTDOWN, RUNLOOP_CTL_SET_EXEC, + RUNLOOP_CTL_SET_PERFCNT_ENABLE, + RUNLOOP_CTL_UNSET_PERFCNT_ENABLE, + RUNLOOP_CTL_IS_PERFCNT_ENABLE, /* Checks for state changes in this frame. */ RUNLOOP_CTL_CHECK_STATE, RUNLOOP_CTL_CHECK_MOVIE, @@ -121,7 +124,6 @@ typedef struct rarch_resolution typedef struct global { - bool perfcnt_enable; bool force_fullscreen; struct @@ -336,6 +338,8 @@ void rarch_main_msg_queue_push_new(uint32_t hash, unsigned prio, const char *rarch_main_msg_queue_pull(void); +bool *runloop_perfcnt_enabled(void); + bool runloop_ctl(enum runloop_ctl_state state, void *data); typedef int (*transfer_cb_t)(void *data, size_t len);