[farsight2/master] Print warnings if the state change fails when removing the udpsrc elements

Olivier Crête olivier.crete at collabora.co.uk
Tue Dec 23 15:19:44 PST 2008


---
 transmitters/rawudp/fs-rawudp-transmitter.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/transmitters/rawudp/fs-rawudp-transmitter.c b/transmitters/rawudp/fs-rawudp-transmitter.c
index d210568..ec6b7c9 100644
--- a/transmitters/rawudp/fs-rawudp-transmitter.c
+++ b/transmitters/rawudp/fs-rawudp-transmitter.c
@@ -496,6 +496,7 @@ _create_sinksource (gchar *elementname, GstBin *bin,
   GstElement *elem;
   GstPadLinkReturn ret;
   GstPad *elempad = NULL;
+  GstStateChangeReturn state_ret;
 
   g_assert (direction == GST_PAD_SINK || direction == GST_PAD_SRC);
 
@@ -561,8 +562,14 @@ _create_sinksource (gchar *elementname, GstBin *bin,
 
  error:
 
-  gst_element_set_state (elem, GST_STATE_NULL);
+  gst_object_ref (elem);
   gst_bin_remove (bin, elem);
+  state_ret = gst_element_set_state (elem, GST_STATE_NULL);
+  if (state_ret != GST_STATE_CHANGE_SUCCESS) {
+    g_warning ("On error, could not reset %s to state NULL (%s)", elementname,
+      gst_element_state_change_return_get_name (state_ret));
+  }
+  gst_object_unref (elem);
 
   if (elempad)
     gst_object_unref (elempad);
@@ -661,7 +668,8 @@ fs_rawudp_transmitter_put_udpport (FsRawUdpTransmitter *trans,
     gst_bin_remove (GST_BIN (trans->priv->gst_src), udpport->udpsrc);
     ret = gst_element_set_state (udpport->udpsrc, GST_STATE_NULL);
     if (ret != GST_STATE_CHANGE_SUCCESS) {
-      g_warning ("Error changing state of udpsrc: %d", ret);
+      g_warning ("Error changing state of udpsrc: %s",
+        gst_element_state_change_return_get_name (ret));
     }
     gst_object_unref (udpport->udpsrc);
   }
@@ -677,7 +685,8 @@ fs_rawudp_transmitter_put_udpport (FsRawUdpTransmitter *trans,
     gst_bin_remove (GST_BIN (trans->priv->gst_sink), udpport->udpsink);
     ret = gst_element_set_state (udpport->udpsink, GST_STATE_NULL);
     if (ret != GST_STATE_CHANGE_SUCCESS) {
-      g_warning ("Error changing state of udpsink: %d", ret);
+      g_warning ("Error changing state of udpsink: %s",
+        gst_element_state_change_return_get_name (ret));
     }
     gst_object_unref (udpport->udpsink);
   }
-- 
1.5.6.5




More information about the farsight-commits mailing list