ext/libpng/gstpngdec.c: Make state change function thread-safe.
authorTim-Philipp Müller <tim@centricular.net>
Thu, 23 Mar 2006 19:57:34 +0000 (19:57 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Thu, 23 Mar 2006 19:57:34 +0000 (19:57 +0000)
Original commit message from CVS:
* ext/libpng/gstpngdec.c: (gst_pngdec_change_state):
Make state change function thread-safe.

ChangeLog
ext/libpng/gstpngdec.c

index 6cf0f8c..af61cf6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2006-03-23  Tim-Philipp Müller  <tim at centricular dot net>
 
+       * ext/libpng/gstpngdec.c: (gst_pngdec_change_state):
+         Make state change function thread-safe.
+
+2006-03-23  Tim-Philipp Müller  <tim at centricular dot net>
+
        * gst/wavparse/gstwavparse.c: (gst_wavparse_get_upstream_size),
        (gst_wavparse_stream_headers), (gst_wavparse_stream_data):
          Don't try to read beyond the end of the file just because
index 6842328..9bf672c 100644 (file)
@@ -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;
 }