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;
case MENU_ENTRIES_CTL_SETTINGS_DEINIT:
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;
break;
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;
}
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)
return;
if (!data)
return false;
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 true;
case MENU_SETTING_CTL_FREE:
return menu_setting_free(data);
case MENU_SETTING_CTL_NONE:
default:
break;

View File

@ -66,6 +66,7 @@ enum setting_flags
enum menu_setting_ctl_state
{
MENU_SETTING_CTL_NONE = 0,
MENU_SETTING_CTL_FREE,
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,
const char *menu_label, const char *label, unsigned idx);
void menu_setting_free(rarch_setting_t *list);
/**
* setting_new:
* @mask : Bitmask of settings to include.