(Menu) cleanups

This commit is contained in:
twinaphex 2019-08-16 15:51:22 +02:00
parent 9d61590540
commit 8c74de7787
2 changed files with 29 additions and 41 deletions

View File

@ -1173,19 +1173,37 @@ file_list_t *menu_entries_get_selection_buf_ptr(size_t idx)
return menu_list_get_selection(menu_list, (unsigned)idx); return menu_list_get_selection(menu_list, (unsigned)idx);
} }
bool menu_entries_init(void) static void menu_entries_list_deinit(void)
{ {
if (!menu_entries_ctl(MENU_ENTRIES_CTL_LIST_INIT, NULL)) if (menu_entries_list)
menu_list_free(menu_entries_list);
menu_entries_list = NULL;
}
static void menu_entries_settings_deinit(void)
{
menu_setting_free(menu_entries_list_settings);
if (menu_entries_list_settings)
free(menu_entries_list_settings);
menu_entries_list_settings = NULL;
}
static bool menu_entries_init(void)
{
if (!(menu_entries_list = (menu_list_t*)menu_list_new()))
goto error; goto error;
if (!menu_entries_ctl(MENU_ENTRIES_CTL_SETTINGS_INIT, NULL)) menu_setting_ctl(MENU_SETTING_CTL_NEW, &menu_entries_list_settings);
if (!menu_entries_list_settings)
goto error; goto error;
return true; return true;
error: error:
menu_entries_ctl(MENU_ENTRIES_CTL_LIST_DEINIT, NULL); menu_entries_settings_deinit();
menu_entries_ctl(MENU_ENTRIES_CTL_SETTINGS_DEINIT, NULL); menu_entries_list_deinit();
return false; return false;
} }
@ -1402,14 +1420,6 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
{ {
switch (state) switch (state)
{ {
case MENU_ENTRIES_CTL_DEINIT:
menu_entries_ctl(MENU_ENTRIES_CTL_SETTINGS_DEINIT, NULL);
menu_entries_ctl(MENU_ENTRIES_CTL_LIST_DEINIT, NULL);
menu_entries_need_refresh = false;
menu_entries_nonblocking_refresh = false;
menu_entries_begin = 0;
break;
case MENU_ENTRIES_CTL_NEEDS_REFRESH: case MENU_ENTRIES_CTL_NEEDS_REFRESH:
if (menu_entries_nonblocking_refresh) if (menu_entries_nonblocking_refresh)
return false; return false;
@ -1424,15 +1434,6 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
*list = menu_entries_list; *list = menu_entries_list;
} }
return true; return true;
case MENU_ENTRIES_CTL_LIST_DEINIT:
if (menu_entries_list)
menu_list_free(menu_entries_list);
menu_entries_list = NULL;
break;
case MENU_ENTRIES_CTL_LIST_INIT:
if (!(menu_entries_list = (menu_list_t*)menu_list_new()))
return false;
break;
case MENU_ENTRIES_CTL_SETTINGS_GET: case MENU_ENTRIES_CTL_SETTINGS_GET:
{ {
rarch_setting_t **settings = (rarch_setting_t**)data; rarch_setting_t **settings = (rarch_setting_t**)data;
@ -1441,18 +1442,6 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
*settings = menu_entries_list_settings; *settings = menu_entries_list_settings;
} }
break; break;
case MENU_ENTRIES_CTL_SETTINGS_DEINIT:
menu_setting_free(menu_entries_list_settings);
if (menu_entries_list_settings)
free(menu_entries_list_settings);
menu_entries_list_settings = NULL;
break;
case MENU_ENTRIES_CTL_SETTINGS_INIT:
menu_setting_ctl(MENU_SETTING_CTL_NEW, &menu_entries_list_settings);
if (!menu_entries_list_settings)
return false;
break;
case MENU_ENTRIES_CTL_SET_REFRESH: case MENU_ENTRIES_CTL_SET_REFRESH:
{ {
bool *nonblocking = (bool*)data; bool *nonblocking = (bool*)data;
@ -3461,7 +3450,12 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
menu_display_framebuf_width = 0; menu_display_framebuf_width = 0;
menu_display_framebuf_height = 0; menu_display_framebuf_height = 0;
menu_display_framebuf_pitch = 0; menu_display_framebuf_pitch = 0;
menu_entries_ctl(MENU_ENTRIES_CTL_DEINIT, NULL); menu_entries_settings_deinit();
menu_entries_list_deinit();
menu_entries_need_refresh = false;
menu_entries_nonblocking_refresh = false;
menu_entries_begin = 0;
command_event(CMD_EVENT_HISTORY_DEINIT, NULL); command_event(CMD_EVENT_HISTORY_DEINIT, NULL);
rarch_favorites_deinit(); rarch_favorites_deinit();

View File

@ -35,13 +35,9 @@ RETRO_BEGIN_DECLS
enum menu_entries_ctl_state enum menu_entries_ctl_state
{ {
MENU_ENTRIES_CTL_NONE = 0, MENU_ENTRIES_CTL_NONE = 0,
MENU_ENTRIES_CTL_DEINIT,
MENU_ENTRIES_CTL_LIST_GET, MENU_ENTRIES_CTL_LIST_GET,
MENU_ENTRIES_CTL_LIST_DEINIT, MENU_ENTRIES_CTL_LIST_DEINIT,
MENU_ENTRIES_CTL_LIST_INIT,
MENU_ENTRIES_CTL_SETTINGS_GET, MENU_ENTRIES_CTL_SETTINGS_GET,
MENU_ENTRIES_CTL_SETTINGS_DEINIT,
MENU_ENTRIES_CTL_SETTINGS_INIT,
MENU_ENTRIES_CTL_SET_REFRESH, MENU_ENTRIES_CTL_SET_REFRESH,
MENU_ENTRIES_CTL_UNSET_REFRESH, MENU_ENTRIES_CTL_UNSET_REFRESH,
MENU_ENTRIES_CTL_NEEDS_REFRESH, MENU_ENTRIES_CTL_NEEDS_REFRESH,
@ -285,8 +281,6 @@ int menu_entry_action(menu_entry_t *entry,
void menu_entry_init(menu_entry_t *entry); void menu_entry_init(menu_entry_t *entry);
bool menu_entries_init(void);
RETRO_END_DECLS RETRO_END_DECLS
#endif #endif