From: Alexandre Julliard julliard@winehq.org
Avoids spamming stderr when debug output is disabled. --- dlls/winegstreamer/main.c | 2 ++ dlls/winegstreamer/unixlib.h | 2 ++ dlls/winegstreamer/wg_parser.c | 18 +++++++++++++----- 3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/dlls/winegstreamer/main.c b/dlls/winegstreamer/main.c index 189790db155..40507a4b929 100644 --- a/dlls/winegstreamer/main.c +++ b/dlls/winegstreamer/main.c @@ -68,6 +68,8 @@ struct wg_parser *wg_parser_create(enum wg_parser_type type, bool unlimited_buff { .type = type, .unlimited_buffering = unlimited_buffering, + .err_on = ERR_ON(quartz), + .warn_on = WARN_ON(quartz), };
TRACE("type %#x, unlimited_buffering %d.\n", type, unlimited_buffering); diff --git a/dlls/winegstreamer/unixlib.h b/dlls/winegstreamer/unixlib.h index e2eef2a4932..8d6b77d5e69 100644 --- a/dlls/winegstreamer/unixlib.h +++ b/dlls/winegstreamer/unixlib.h @@ -157,6 +157,8 @@ struct wg_parser_create_params struct wg_parser *parser; enum wg_parser_type type; bool unlimited_buffering; + bool err_on; + bool warn_on; };
struct wg_parser_connect_params diff --git a/dlls/winegstreamer/wg_parser.c b/dlls/winegstreamer/wg_parser.c index f0487fd1ffa..890f3c31b16 100644 --- a/dlls/winegstreamer/wg_parser.c +++ b/dlls/winegstreamer/wg_parser.c @@ -76,6 +76,7 @@ struct wg_parser
pthread_cond_t init_cond; bool no_more_pads, has_duration, error; + bool err_on, warn_on;
pthread_cond_t read_cond, read_done_cond; struct @@ -1071,8 +1072,11 @@ static GstBusSyncReply bus_handler_cb(GstBus *bus, GstMessage *msg, gpointer use { case GST_MESSAGE_ERROR: gst_message_parse_error(msg, &err, &dbg_info); - fprintf(stderr, "winegstreamer error: %s: %s\n", GST_OBJECT_NAME(msg->src), err->message); - fprintf(stderr, "winegstreamer error: %s: %s\n", GST_OBJECT_NAME(msg->src), dbg_info); + if (parser->err_on) + { + fprintf(stderr, "winegstreamer error: %s: %s\n", GST_OBJECT_NAME(msg->src), err->message); + fprintf(stderr, "winegstreamer error: %s: %s\n", GST_OBJECT_NAME(msg->src), dbg_info); + } g_error_free(err); g_free(dbg_info); pthread_mutex_lock(&parser->mutex); @@ -1083,8 +1087,11 @@ static GstBusSyncReply bus_handler_cb(GstBus *bus, GstMessage *msg, gpointer use
case GST_MESSAGE_WARNING: gst_message_parse_warning(msg, &err, &dbg_info); - fprintf(stderr, "winegstreamer warning: %s: %s\n", GST_OBJECT_NAME(msg->src), err->message); - fprintf(stderr, "winegstreamer warning: %s: %s\n", GST_OBJECT_NAME(msg->src), dbg_info); + if (parser->warn_on) + { + fprintf(stderr, "winegstreamer warning: %s: %s\n", GST_OBJECT_NAME(msg->src), err->message); + fprintf(stderr, "winegstreamer warning: %s: %s\n", GST_OBJECT_NAME(msg->src), dbg_info); + } g_error_free(err); g_free(dbg_info); break; @@ -1571,7 +1578,8 @@ static NTSTATUS wg_parser_create(void *args) pthread_cond_init(&parser->read_done_cond, NULL); parser->init_gst = init_funcs[params->type]; parser->unlimited_buffering = params->unlimited_buffering; - + parser->err_on = params->err_on; + parser->warn_on = params->warn_on; GST_DEBUG("Created winegstreamer parser %p.", parser); params->parser = parser; return S_OK;
Could we use `GST_ERROR` / `GST_WARNING` for these messages instead of `fprintf` like for all the other messages printed from the unix side?
On 9/29/22 05:40, Rémi Bernon (@rbernon) wrote:
Could we use `GST_ERROR` / `GST_WARNING` for these messages instead of `fprintf` like for all the other messages printed from the unix side?
The reason I didn't is because GST_ERROR output isn't printed by default, even at the highest severity. GST_MESSAGE_ERROR and GST_MESSAGE_WARNING are by contrast meant to be user-visible; they're printed from gst-play-1.0 for example.
In practice I think we at least want to make sure that "missing decoder" messages are printed.
This merge request was approved by Zebediah Figura.