From 9dfcdec02b055b214411dd1965999d605605c2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 14 May 2016 17:31:51 +0300 Subject: [PATCH] basesink/src: Post an error message if ::start() fails The subclass should do that already, but just in case do it ourselves too as a fallback. Without this, e.g. playbin will just wait forever if this fails because it is triggered as part of an ASYNC state change. --- libs/gst/base/gstbasesink.c | 4 ++++ libs/gst/base/gstbasesrc.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index 9ad65c8053..035895101e 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -5238,6 +5238,10 @@ gst_base_sink_change_state (GstElement * element, GstStateChange transition) start_failed: { GST_DEBUG_OBJECT (basesink, "failed to start"); + /* subclass is supposed to post a message but we post one as a fallback + * just in case */ + GST_ELEMENT_ERROR (basesink, CORE, STATE_CHANGE, (NULL), + ("Failed to start")); return GST_STATE_CHANGE_FAILURE; } activate_failed: diff --git a/libs/gst/base/gstbasesrc.c b/libs/gst/base/gstbasesrc.c index 35b7a2ee5f..934dcca1bb 100644 --- a/libs/gst/base/gstbasesrc.c +++ b/libs/gst/base/gstbasesrc.c @@ -3348,7 +3348,10 @@ was_started: could_not_start: { GST_DEBUG_OBJECT (basesrc, "could not start"); - /* subclass is supposed to post a message. We don't have to call _stop. */ + /* subclass is supposed to post a message but we post one as a fallback + * just in case. We don't have to call _stop. */ + GST_ELEMENT_ERROR (basesrc, CORE, STATE_CHANGE, (NULL), + ("Failed to start")); gst_base_src_start_complete (basesrc, GST_FLOW_ERROR); return FALSE; }