summaryrefslogtreecommitdiffstats
path: root/ext/libpng
diff options
context:
space:
mode:
Diffstat (limited to 'ext/libpng')
-rw-r--r--ext/libpng/gstpngdec.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/ext/libpng/gstpngdec.c b/ext/libpng/gstpngdec.c
index 68423288..9bf672ce 100644
--- a/ext/libpng/gstpngdec.c
+++ b/ext/libpng/gstpngdec.c
@@ -592,8 +592,8 @@ beach:
static GstStateChangeReturn
gst_pngdec_change_state (GstElement * element, GstStateChange transition)
{
- GstStateChangeReturn ret = GST_STATE_CHANGE_FAILURE;
- GstPngDec *pngdec = NULL;
+ GstStateChangeReturn ret;
+ GstPngDec *pngdec;
pngdec = GST_PNGDEC (element);
@@ -601,6 +601,15 @@ gst_pngdec_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_READY_TO_PAUSED:
gst_pngdec_libpng_init (pngdec);
break;
+ default:
+ break;
+ }
+
+ ret = parent_class->change_state (element, transition);
+ if (ret != GST_STATE_CHANGE_SUCCESS)
+ return ret;
+
+ switch (transition) {
case GST_STATE_CHANGE_PAUSED_TO_READY:
gst_pngdec_libpng_clear (pngdec);
break;
@@ -608,8 +617,6 @@ gst_pngdec_change_state (GstElement * element, GstStateChange transition)
break;
}
- ret = parent_class->change_state (element, transition);
-
return ret;
}