https://bugzilla.gnome.org/show_bug.cgi?id=756611
{
GST_DEBUG_OBJECT (element,
"element failed to change states -- activation problem?");
+ do_async_done (dbin);
return GST_STATE_CHANGE_FAILURE;
}
}
/* ERRORS */
failure:
{
+ do_async_done (playbin);
+
if (transition == GST_STATE_CHANGE_READY_TO_PAUSED) {
GstSourceGroup *curr_group;
{
GST_DEBUG_OBJECT (element,
"element failed to change states -- activation problem?");
+ do_async_done (playsink);
return GST_STATE_CHANGE_FAILURE;
}
}
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)) {