Add MENU_SETTING_CTL_FREE

This commit is contained in:
twinaphex 2016-03-18 22:27:40 +01:00
parent 71f2fa531c
commit a5cbafe0e5
3 changed files with 11 additions and 8 deletions

View File

@ -653,7 +653,7 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
break; break;
case MENU_ENTRIES_CTL_SETTINGS_DEINIT: case MENU_ENTRIES_CTL_SETTINGS_DEINIT:
if (menu_entries_list_settings) if (menu_entries_list_settings)
menu_setting_free(menu_entries_list_settings); menu_setting_ctl(MENU_SETTING_CTL_FREE, menu_entries_list_settings);
menu_entries_list_settings = NULL; menu_entries_list_settings = NULL;
break; break;
case MENU_ENTRIES_CTL_SETTINGS_INIT: case MENU_ENTRIES_CTL_SETTINGS_INIT:

View File

@ -7357,12 +7357,12 @@ bool menu_setting_action_right(rarch_setting_t *setting, bool wraparound)
return true; return true;
} }
void menu_setting_free(rarch_setting_t *list) static bool menu_setting_free(void *data)
{ {
rarch_setting_t *setting = list; rarch_setting_t *setting = (rarch_setting_t*)data;
if (!list) if (!data)
return; return false;
for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting)) for (; menu_setting_get_type(setting) != ST_NONE; menu_settings_list_increment(&setting))
{ {
@ -7386,7 +7386,9 @@ void menu_setting_free(rarch_setting_t *list)
} }
} }
free(list); free(data);
return true;
} }
/** /**
@ -7568,6 +7570,8 @@ bool menu_setting_ctl(enum menu_setting_ctl_state state, void *data)
return false; return false;
} }
return true; return true;
case MENU_SETTING_CTL_FREE:
return menu_setting_free(data);
case MENU_SETTING_CTL_NONE: case MENU_SETTING_CTL_NONE:
default: default:
break; break;

View File

@ -66,6 +66,7 @@ enum setting_flags
enum menu_setting_ctl_state enum menu_setting_ctl_state
{ {
MENU_SETTING_CTL_NONE = 0, MENU_SETTING_CTL_NONE = 0,
MENU_SETTING_CTL_FREE,
MENU_SETTING_CTL_IS_OF_PATH_TYPE MENU_SETTING_CTL_IS_OF_PATH_TYPE
}; };
@ -317,8 +318,6 @@ void menu_setting_get_label(void *data, char *s,
size_t len, unsigned *w, unsigned type, size_t len, unsigned *w, unsigned type,
const char *menu_label, const char *label, unsigned idx); const char *menu_label, const char *label, unsigned idx);
void menu_setting_free(rarch_setting_t *list);
/** /**
* setting_new: * setting_new:
* @mask : Bitmask of settings to include. * @mask : Bitmask of settings to include.