mirror of
https://github.com/libretro/RetroArch.git
synced 2024-11-27 02:00:41 +00:00
(task_overlay.c) No more string_list usage
This commit is contained in:
parent
a758b13fac
commit
00e669b09a
@ -20,7 +20,6 @@
|
|||||||
#include <retro_miscellaneous.h>
|
#include <retro_miscellaneous.h>
|
||||||
#include <file/file_path.h>
|
#include <file/file_path.h>
|
||||||
#include <file/config_file.h>
|
#include <file/config_file.h>
|
||||||
#include <lists/string_list.h>
|
|
||||||
#include <streams/file_stream.h>
|
#include <streams/file_stream.h>
|
||||||
#include <string/stdstring.h>
|
#include <string/stdstring.h>
|
||||||
#include <lrc_hash.h>
|
#include <lrc_hash.h>
|
||||||
@ -233,6 +232,15 @@ static bool task_overlay_load_desc(
|
|||||||
char overlay_desc_key[32];
|
char overlay_desc_key[32];
|
||||||
char overlay_key[64];
|
char overlay_key[64];
|
||||||
char overlay[256];
|
char overlay[256];
|
||||||
|
char *tok, *save;
|
||||||
|
unsigned list_size = 0;
|
||||||
|
char *elem0 = NULL;
|
||||||
|
char *elem1 = NULL;
|
||||||
|
char *elem2 = NULL;
|
||||||
|
char *elem3 = NULL;
|
||||||
|
char *elem4 = NULL;
|
||||||
|
char *elem5 = NULL;
|
||||||
|
char *overlay_cpy = NULL;
|
||||||
float tmp_float = 0.0f;
|
float tmp_float = 0.0f;
|
||||||
bool tmp_bool = false;
|
bool tmp_bool = false;
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
@ -273,25 +281,50 @@ static bool task_overlay_load_desc(
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
string_list_initialize(&list);
|
overlay_cpy = strdup(overlay);
|
||||||
if (!string_split_noalloc(&list, overlay, ", "))
|
if ((tok = strtok_r(overlay_cpy, ", ", &save)))
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Overlay]: Failed to split overlay desc.\n");
|
elem0 = strdup(tok);
|
||||||
ret = false;
|
list_size++;
|
||||||
goto end;
|
|
||||||
}
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem1 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem2 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save))) /* box */
|
||||||
|
{
|
||||||
|
elem3 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem4 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem5 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
free(overlay_cpy);
|
||||||
|
|
||||||
if (list.size < 6)
|
if (list_size < 6)
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Overlay]: Overlay desc is invalid. Requires at least 6 tokens.\n");
|
RARCH_ERR("[Overlay]: Overlay desc is invalid. Requires at least 6 tokens.\n");
|
||||||
ret = false;
|
ret = false;
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
key = list.elems[0].data;
|
key = elem0;
|
||||||
x = list.elems[1].data;
|
x = elem1;
|
||||||
y = list.elems[2].data;
|
y = elem2;
|
||||||
box = list.elems[3].data;
|
box = elem3;
|
||||||
|
|
||||||
desc->retro_key_idx = 0;
|
desc->retro_key_idx = 0;
|
||||||
BIT256_CLEAR_ALL(desc->button_mask);
|
BIT256_CLEAR_ALL(desc->button_mask);
|
||||||
@ -390,8 +423,8 @@ static bool task_overlay_load_desc(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
desc->range_x = (float)strtod(list.elems[4].data, NULL) * width_mod;
|
desc->range_x = (float)strtod(elem4, NULL) * width_mod;
|
||||||
desc->range_y = (float)strtod(list.elems[5].data, NULL) * height_mod;
|
desc->range_y = (float)strtod(elem5, NULL) * height_mod;
|
||||||
|
|
||||||
_len = strlcpy(conf_key, overlay_desc_key, sizeof(conf_key));
|
_len = strlcpy(conf_key, overlay_desc_key, sizeof(conf_key));
|
||||||
|
|
||||||
@ -471,7 +504,18 @@ static bool task_overlay_load_desc(
|
|||||||
input_overlay->pos ++;
|
input_overlay->pos ++;
|
||||||
|
|
||||||
end:
|
end:
|
||||||
string_list_deinitialize(&list);
|
if (elem0)
|
||||||
|
free(elem0);
|
||||||
|
if (elem1)
|
||||||
|
free(elem1);
|
||||||
|
if (elem2)
|
||||||
|
free(elem2);
|
||||||
|
if (elem3)
|
||||||
|
free(elem3);
|
||||||
|
if (elem4)
|
||||||
|
free(elem4);
|
||||||
|
if (elem5)
|
||||||
|
free(elem5);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,25 +843,55 @@ static void task_overlay_deferred_load(retro_task_t *task)
|
|||||||
if (config_get_array(conf, overlay->config.rect.key,
|
if (config_get_array(conf, overlay->config.rect.key,
|
||||||
overlay->config.rect.array, sizeof(overlay->config.rect.array)))
|
overlay->config.rect.array, sizeof(overlay->config.rect.array)))
|
||||||
{
|
{
|
||||||
struct string_list list = {0};
|
char *tok, *save;
|
||||||
|
char *elem0 = NULL;
|
||||||
|
char *elem1 = NULL;
|
||||||
|
char *elem2 = NULL;
|
||||||
|
char *elem3 = NULL;
|
||||||
|
unsigned list_size = 0;
|
||||||
|
char *cfg_rect_array_cpy = strdup(overlay->config.rect.array);
|
||||||
|
|
||||||
string_list_initialize(&list);
|
if ((tok = strtok_r(cfg_rect_array_cpy, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem0 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem1 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem2 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
if ((tok = strtok_r(NULL, ", ", &save)))
|
||||||
|
{
|
||||||
|
elem3 = strdup(tok);
|
||||||
|
list_size++;
|
||||||
|
}
|
||||||
|
free(cfg_rect_array_cpy);
|
||||||
|
|
||||||
if ( !string_split_noalloc(
|
if (list_size < 4)
|
||||||
&list, overlay->config.rect.array, ", ")
|
|
||||||
|| list.size < 4)
|
|
||||||
{
|
{
|
||||||
RARCH_ERR("[Overlay]: Failed to split rect \"%s\" into at least four tokens.\n",
|
RARCH_ERR("[Overlay]: Failed to split rect \"%s\" into at least four tokens.\n",
|
||||||
overlay->config.rect.array);
|
overlay->config.rect.array);
|
||||||
string_list_deinitialize(&list);
|
free(elem0);
|
||||||
|
free(elem1);
|
||||||
|
free(elem2);
|
||||||
|
free(elem3);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
overlay->x = (float)strtod(list.elems[0].data, NULL);
|
overlay->x = (float)strtod(elem0, NULL);
|
||||||
overlay->y = (float)strtod(list.elems[1].data, NULL);
|
overlay->y = (float)strtod(elem1, NULL);
|
||||||
overlay->w = (float)strtod(list.elems[2].data, NULL);
|
overlay->w = (float)strtod(elem2, NULL);
|
||||||
overlay->h = (float)strtod(list.elems[3].data, NULL);
|
overlay->h = (float)strtod(elem3, NULL);
|
||||||
string_list_deinitialize(&list);
|
free(elem0);
|
||||||
|
free(elem1);
|
||||||
|
free(elem2);
|
||||||
|
free(elem3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assume for now that scaling center is in the middle.
|
/* Assume for now that scaling center is in the middle.
|
||||||
|
Loading…
Reference in New Issue
Block a user