From 78683440568ec4970caaaeb94de570faa34bf42d Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Thu, 28 Aug 2025 09:38:09 +0200 Subject: [PATCH] vdisp/gl: parse_fmt - return bool returning the pointer was a bit tricky - very slightly more correct but needlessly more complicated --- src/video_display/gl.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/video_display/gl.cpp b/src/video_display/gl.cpp index 82e20a4f4..c637fafb8 100644 --- a/src/video_display/gl.cpp +++ b/src/video_display/gl.cpp @@ -732,13 +732,15 @@ list_hints() "Example usage: " TBOLD("-d gl:init_hint=platform=x11") "\n\n"); } -static void *display_gl_parse_fmt(struct state_gl *s, char *ptr) { +static bool +display_gl_parse_fmt(struct state_gl *s, char *ptr) +{ char *tok, *save_ptr = NULL; while((tok = strtok_r(ptr, ":", &save_ptr)) != NULL) { if (strcmp(tok, "help") == 0 || strcmp(tok, "fullhelp") == 0) { gl_show_help(strcmp(tok, "fullhelp") == 0); - return INIT_NOERR; + return false; } if (!strcmp(tok, "d") || !strcmp(tok, "dforce")) { s->deinterlace = !strcmp(tok, "d") ? state_gl::deint::on : state_gl::deint::force; @@ -784,7 +786,7 @@ static void *display_gl_parse_fmt(struct state_gl *s, char *ptr) { } #else log_msg(LOG_LEVEL_ERROR, MOD_NAME "Syphon/Spout support not compiled in.\n"); - return nullptr; + return false; #endif } else if (strstr(tok, "gamma=") == tok) { s->gamma = stof(strchr(tok, '=') + 1); @@ -798,7 +800,7 @@ static void *display_gl_parse_fmt(struct state_gl *s, char *ptr) { } else if (strstr(tok, "size=") == tok || strstr(tok, "fixed_size=") == tok) { if (!set_size(s, tok)) { - return nullptr; + return false; } } else if (strcmp(tok, "fixed_size") == 0) { s->fixed_size = true; @@ -810,15 +812,15 @@ static void *display_gl_parse_fmt(struct state_gl *s, char *ptr) { parse_hints(s, false, strchr(tok, '=') + 1); } else if (strcmp(tok, "list_hints") == 0) { list_hints(); - return nullptr; + return false; } else { log_msg(LOG_LEVEL_ERROR, MOD_NAME "Unknown option: %s\n", tok); - return nullptr; + return false; } ptr = NULL; } - return s; + return true; } static void * display_gl_init(struct module *parent, const char *fmt, unsigned int flags) { @@ -833,16 +835,16 @@ static void * display_gl_init(struct module *parent, const char *fmt, unsigned i if (fmt != NULL) { char *tmp = strdup(fmt); - void *ret = nullptr; + bool ret = false; try { ret = display_gl_parse_fmt(s, tmp); } catch (std::invalid_argument &e) { LOG(LOG_LEVEL_ERROR) << MOD_NAME << "Invalid numeric value for an option!\n"; } free(tmp); - if (ret != s) { // ret is either nullptr or INIT_NOERR (help requested) + if (!ret) { delete s; - return ret; + return strstr(fmt, "help") == nullptr ? nullptr : INIT_NOERR; } } @@ -1302,7 +1304,6 @@ static void gl_process_frames(struct state_gl *s) free_message(msg, r); } - if (s->show_cursor == state_gl::SC_AUTOHIDE) { if (s->cursor_shown_from != steady_clock::time_point()) { const auto now = steady_clock::now();