diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2023-08-30 22:36:10 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2023-08-30 22:36:44 -0700 |
commit | 7e7db8eb8e8f73f04ca3acdfc2078a7122932fd2 (patch) | |
tree | 347c2dc5ae9a9bb62657e06da6f4b4fe90db006f | |
parent | 6151f36336cac11d804f7a40cf2b0f3d0565d643 (diff) |
til/sdl_fb: handle baking errors in sdl_fb_setup()
More setup_func conversion to returning the failed setting on
errors during res_setup baking.
-rw-r--r-- | src/sdl_fb.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/sdl_fb.c b/src/sdl_fb.c index 69d50c4..4ccf0ed 100644 --- a/src/sdl_fb.c +++ b/src/sdl_fb.c @@ -279,11 +279,11 @@ static int sdl_fb_setup(const til_settings_t *settings, til_setting_t **res_sett "on", NULL }; - const char *fullscreen; - const char *size; + til_setting_t *fullscreen; + til_setting_t *size; int r; - r = til_settings_get_and_describe_value(settings, + r = til_settings_get_and_describe_setting(settings, &(til_setting_spec_t){ .name = "SDL fullscreen mode", .key = "fullscreen", @@ -298,8 +298,8 @@ static int sdl_fb_setup(const til_settings_t *settings, til_setting_t **res_sett if (r) return r; - if (!strcasecmp(fullscreen, "off")) { - r = til_settings_get_and_describe_value(settings, + if (!strcasecmp(fullscreen->value, "off")) { + r = til_settings_get_and_describe_setting(settings, &(til_setting_spec_t){ .name = "SDL window size", .key = "size", @@ -313,7 +313,7 @@ static int sdl_fb_setup(const til_settings_t *settings, til_setting_t **res_sett res_desc); if (r) return r; - } else if ((size = til_settings_get_value_by_key(settings, "size", res_setting)) && !(*res_setting)->desc) { + } else if ((size = til_settings_get_setting_by_key(settings, "size", res_setting)) && !size->desc) { /* if fullscreen=on AND size=WxH is specified, we'll do a more legacy style SDL fullscreen * where it tries to change the video mode. But if size is unspecified, it'll be a desktop * style fullscreen where it just uses a fullscreen window in the existing video mode, and @@ -346,11 +346,11 @@ static int sdl_fb_setup(const til_settings_t *settings, til_setting_t **res_sett if (!setup) return -ENOMEM; - if (!strcasecmp(fullscreen, "on")) + if (!strcasecmp(fullscreen->value, "on")) setup->fullscreen = 1; - if (size) - sscanf(size, "%u%*[xX]%u", &setup->width, &setup->height); + if (size && sscanf(size->value, "%u%*[xX]%u", &setup->width, &setup->height) != 2) + return til_setup_free_with_failed_setting_ret_err(&setup->til_setup, size, res_setting, -EINVAL); *res_setup = &setup->til_setup; } |