summaryrefslogtreecommitdiffstats
path: root/ext/libpng
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2006-03-23 19:57:34 +0000
committerTim-Philipp Müller <tim@centricular.net>2006-03-23 19:57:34 +0000
commit38c2bcc170a967e91c62b0f893586aceeb7ab9a2 (patch)
treefcc8276f174646545aa1cad5430d3905d5a610e4 /ext/libpng
parent459333b3c0080d7b5ceafaa62067d21176a00304 (diff)
ext/libpng/gstpngdec.c: Make state change function thread-safe.
Original commit message from CVS: * ext/libpng/gstpngdec.c: (gst_pngdec_change_state): Make state change function thread-safe.
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;
}