decodebin/playbin/playsink/subtitleoverlay: Post async-done on state change failures

https://bugzilla.gnome.org/show_bug.cgi?id=756611
This commit is contained in:
Sebastian Dröge 2015-10-17 22:25:22 +03:00
parent 87dbe54797
commit 4d6aa0f831
4 changed files with 8 additions and 1 deletions

View file

@ -5147,6 +5147,7 @@ activate_failed:
{
GST_DEBUG_OBJECT (element,
"element failed to change states -- activation problem?");
do_async_done (dbin);
return GST_STATE_CHANGE_FAILURE;
}
}

View file

@ -5782,6 +5782,8 @@ gst_play_bin_change_state (GstElement * element, GstStateChange transition)
/* ERRORS */
failure:
{
do_async_done (playbin);
if (transition == GST_STATE_CHANGE_READY_TO_PAUSED) {
GstSourceGroup *curr_group;

View file

@ -4961,6 +4961,7 @@ activate_failed:
{
GST_DEBUG_OBJECT (element,
"element failed to change states -- activation problem?");
do_async_done (playsink);
return GST_STATE_CHANGE_FAILURE;
}
}

View file

@ -1333,8 +1333,11 @@ gst_subtitle_overlay_change_state (GstElement * element,
bret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
GST_DEBUG_OBJECT (self, "Base class state changed returned: %d", bret);
if (G_UNLIKELY (bret == GST_STATE_CHANGE_FAILURE))
if (G_UNLIKELY (bret == GST_STATE_CHANGE_FAILURE)) {
do_async_done (self);
return ret;
}
else if (bret == GST_STATE_CHANGE_ASYNC)
ret = bret;
else if (G_UNLIKELY (bret == GST_STATE_CHANGE_NO_PREROLL)) {