Don't use global->cheat outside cheats.c

This commit is contained in:
twinaphex 2015-12-01 03:07:16 +01:00
parent e0ec68a73d
commit 2c2aaec107
3 changed files with 27 additions and 14 deletions

View File

@ -382,8 +382,10 @@ const char *cheat_manager_get_code(unsigned i)
return handle->cheats[i].code;
}
const char *cheat_manager_get_desc(cheat_manager_t *handle, unsigned i)
const char *cheat_manager_get_desc(unsigned i)
{
global_t *global = global_get_ptr();
cheat_manager_t *handle = global->cheat;
if (!handle)
return NULL;
return handle->cheats[i].desc;
@ -423,3 +425,20 @@ void cheat_manager_state_free(void)
global->cheat = NULL;
}
bool cheat_manager_alloc_if_empty(void)
{
global_t *global = global_get_ptr();
cheat_manager_t *cheat = global->cheat;
if (!cheat)
{
global->cheat = cheat_manager_new(0);
if (!global->cheat)
return false;
cheat = global->cheat;
}
return true;
}

View File

@ -61,7 +61,7 @@ void cheat_manager_toggle_index(unsigned i);
unsigned cheat_manager_get_buf_size(void);
const char *cheat_manager_get_desc(cheat_manager_t *handle, unsigned i);
const char *cheat_manager_get_desc(unsigned i);
const char *cheat_manager_get_code(unsigned i);
@ -74,6 +74,8 @@ void cheat_manager_state_checks(
void cheat_manager_state_free(void);
bool cheat_manager_alloc_if_empty(void);
#ifdef __cplusplus
}
#endif

View File

@ -1971,17 +1971,9 @@ static int menu_displaylist_parse_options(menu_displaylist_info_t *info)
static int menu_displaylist_parse_options_cheats(menu_displaylist_info_t *info)
{
unsigned i;
global_t *global = global_get_ptr();
cheat_manager_t *cheat = global ? global->cheat : NULL;
if (!cheat)
{
global->cheat = cheat_manager_new(0);
if (!global->cheat)
return -1;
cheat = global->cheat;
}
if (!cheat_manager_alloc_if_empty())
return -1;
menu_entries_push(info->list,
menu_hash_to_str(MENU_LABEL_VALUE_CHEAT_FILE_LOAD),
@ -2005,8 +1997,8 @@ static int menu_displaylist_parse_options_cheats(menu_displaylist_info_t *info)
char cheat_label[64] = {0};
snprintf(cheat_label, sizeof(cheat_label), "%s #%u: ", menu_hash_to_str(MENU_VALUE_CHEAT), i);
if (cheat_manager_get_desc(cheat, i))
strlcat(cheat_label, cheat_manager_get_desc(cheat, i), sizeof(cheat_label));
if (cheat_manager_get_desc(i))
strlcat(cheat_label, cheat_manager_get_desc(i), sizeof(cheat_label));
menu_entries_push(info->list, cheat_label, "", MENU_SETTINGS_CHEAT_BEGIN + i, 0, 0);
}