summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-10-17 22:25:22 +0300
committerSebastian Dröge <sebastian@centricular.com>2015-10-20 10:15:58 +0300
commita901db59822900f040e931bf1e7bda87bd14dddb (patch)
tree6edaa5b3c4dd1593cde6d525984d16efa7ec30b7
parent70c8bf65ed63bf2929bf30c8ead7831d595409a8 (diff)
downloadgstreamer-plugins-base-a901db59822900f040e931bf1e7bda87bd14dddb.tar.gz
decodebin/playbin/playsink/subtitleoverlay: Post async-done on state change failures
https://bugzilla.gnome.org/show_bug.cgi?id=756611
-rw-r--r--gst/playback/gstdecodebin2.c1
-rw-r--r--gst/playback/gstplaybin2.c2
-rw-r--r--gst/playback/gstplaysink.c1
-rw-r--r--gst/playback/gstsubtitleoverlay.c5
4 files changed, 8 insertions, 1 deletions
diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c
index 71336b011..cf3a2d117 100644
--- a/gst/playback/gstdecodebin2.c
+++ b/gst/playback/gstdecodebin2.c
@@ -5190,6 +5190,7 @@ activate_failed:
{
GST_DEBUG_OBJECT (element,
"element failed to change states -- activation problem?");
+ do_async_done (dbin);
return GST_STATE_CHANGE_FAILURE;
}
}
diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
index b4e90fcf4..0fde6c2f8 100644
--- a/gst/playback/gstplaybin2.c
+++ b/gst/playback/gstplaybin2.c
@@ -5779,6 +5779,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;
diff --git a/gst/playback/gstplaysink.c b/gst/playback/gstplaysink.c
index 6c5a2cfeb..1685692d9 100644
--- a/gst/playback/gstplaysink.c
+++ b/gst/playback/gstplaysink.c
@@ -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;
}
}
diff --git a/gst/playback/gstsubtitleoverlay.c b/gst/playback/gstsubtitleoverlay.c
index 3f24fd5df..719eebb50 100644
--- a/gst/playback/gstsubtitleoverlay.c
+++ b/gst/playback/gstsubtitleoverlay.c
@@ -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)) {