mirror of
https://github.com/libretro/RetroArch
synced 2025-03-03 04:14:00 +00:00
Create RUNLOOP_CTL_{PERFCNT}
This commit is contained in:
parent
9824eb7ea9
commit
04605f085c
@ -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);
|
||||
|
@ -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),
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
14
runloop.c
14
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;
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user