From: Steinar H. Gunderson Date: Mon, 10 Jun 2019 10:07:49 +0000 (+0200) Subject: Add a helper so that theme script warnings get line numbers. X-Git-Tag: 1.9.0~37 X-Git-Url: https://git.sesse.net/?p=nageru;a=commitdiff_plain;h=ace7c97abd704ad38a3287c22ae42f05c1f9a5b4 Add a helper so that theme script warnings get line numbers. --- diff --git a/nageru/theme.cpp b/nageru/theme.cpp index 71cb2c3..780c7ce 100644 --- a/nageru/theme.cpp +++ b/nageru/theme.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -55,6 +56,20 @@ Theme *get_theme_updata(lua_State* L) return (Theme *)lua_touserdata(L, lua_upvalueindex(1)); } +void print_warning(lua_State* L, const char *format, ...) +{ + char buf[4096]; + va_list ap; + va_start(ap, format); + vsnprintf(buf, sizeof(buf), format, ap); + va_end(ap); + + lua_Debug ar; + lua_getstack(L, 1, &ar); + lua_getinfo(L, "nSl", &ar); + fprintf(stderr, "WARNING: %s:%d: %s", ar.source, ar.currentline, buf); +} + int ThemeMenu_set(lua_State *L) { Theme *theme = get_theme_updata(L); @@ -457,11 +472,7 @@ int LiveInputWrapper_connect_signal(lua_State* L) int signal_num = luaL_checknumber(L, 2); bool success = (*input)->connect_signal(signal_num); if (!success) { - lua_Debug ar; - lua_getstack(L, 1, &ar); - lua_getinfo(L, "nSl", &ar); - fprintf(stderr, "ERROR: %s:%d: Calling connect_signal() on a video or HTML input. Ignoring.\n", - ar.source, ar.currentline); + print_warning(L, "Calling connect_signal() on a video or HTML input. Ignoring.\n"); } return 0; } @@ -480,8 +491,7 @@ int VideoInput_new(lua_State* L) int pixel_format = luaL_checknumber(L, 2); if (pixel_format != bmusb::PixelFormat_8BitYCbCrPlanar && pixel_format != bmusb::PixelFormat_8BitBGRA) { - fprintf(stderr, "WARNING: Invalid enum %d used for video format, choosing Y'CbCr.\n", - pixel_format); + print_warning(L, "Invalid enum %d used for video format, choosing Y'CbCr.\n", pixel_format); pixel_format = bmusb::PixelFormat_8BitYCbCrPlanar; } int ret = wrap_lua_object_nonowned(L, "VideoInput", filename, global_flags.width, global_flags.height); @@ -1528,14 +1538,14 @@ int Theme::map_signal(int signal_num) ++card_index; } if (signal_num >= int(num_cards - 1)) { - fprintf(stderr, "WARNING: Theme asked for input %d, but we only have %u input card(s) (card %d is busy with output).\n", + print_warning(L, "Theme asked for input %d, but we only have %u input card(s) (card %d is busy with output).\n", signal_num, num_cards - 1, global_flags.output_card); fprintf(stderr, "Mapping to card %d instead.\n", card_index); } } else { card_index = signal_num % num_cards; if (signal_num >= int(num_cards)) { - fprintf(stderr, "WARNING: Theme asked for input %d, but we only have %u card(s).\n", signal_num, num_cards); + print_warning(L, "Theme asked for input %d, but we only have %u card(s).\n", signal_num, num_cards); fprintf(stderr, "Mapping to card %d instead.\n", card_index); } }