From 992c05f840381dd251d76eda4f3cc05fb5312c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sun, 2 Jan 2011 13:52:36 +0000 Subject: [PATCH] kate: fix caps and string leaks and some minor clean-ups Don't leak source caps. Use GST_PTR_FORMAT to log caps, so we don't need to leak strings from gst_caps_to_string(). No need to use GST_DEBUG_FUNCPTR for vfuncs where the base class will never look them up (like property getters/setters). Don't use g_return_*_if_fail() for things that aren't directly programming errors (by the application developer). Fixes kate unit test under valgrind. --- ext/kate/gstkatedec.c | 28 ++++++++++++++-------------- ext/kate/gstkatetiger.c | 4 ++-- ext/kate/gstkateutil.c | 8 +++----- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/ext/kate/gstkatedec.c b/ext/kate/gstkatedec.c index 4dbe6d8182..df3607024f 100644 --- a/ext/kate/gstkatedec.c +++ b/ext/kate/gstkatedec.c @@ -158,8 +158,8 @@ gst_kate_dec_class_init (GstKateDecClass * klass) gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; - gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_kate_dec_set_property); - gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_kate_dec_get_property); + gobject_class->set_property = gst_kate_dec_set_property; + gobject_class->get_property = gst_kate_dec_get_property; gst_kate_util_install_decoder_base_properties (gobject_class); @@ -360,10 +360,17 @@ not_in_seg: static GstStateChangeReturn gst_kate_dec_change_state (GstElement * element, GstStateChange transition) { + GstStateChangeReturn ret; GstKateDec *kd = GST_KATE_DEC (element); - return gst_kate_decoder_base_change_state (&kd->decoder, element, + ret = gst_kate_decoder_base_change_state (&kd->decoder, element, parent_class, transition); + + if (transition == GST_STATE_CHANGE_PAUSED_TO_READY) { + gst_caps_replace (&kd->src_caps, NULL); + } + + return ret; } gboolean @@ -383,11 +390,9 @@ gst_kate_dec_sink_event (GstPad * pad, GstEvent * event) GstKateDec *kd = (GstKateDec *) (gst_object_get_parent (GST_OBJECT (pad))); gboolean res = TRUE; - g_return_val_if_fail (kd != NULL, FALSE); + GST_LOG_OBJECT (pad, "Event on sink pad: %s", GST_EVENT_TYPE_NAME (event)); - GST_LOG_OBJECT (kd, "Event on sink pad: %s", GST_EVENT_TYPE_NAME (event)); - - // Delay events till we've set caps + /* Delay events till we've set caps */ if (gst_kate_util_decoder_base_queue_event (&kd->decoder, event, &gst_kate_dec_sink_handle_event, pad)) { gst_object_unref (kd); @@ -407,9 +412,7 @@ gst_kate_dec_sink_handle_event (GstPad * pad, GstEvent * event) GstKateDec *kd = (GstKateDec *) (gst_object_get_parent (GST_OBJECT (pad))); gboolean res = TRUE; - g_return_val_if_fail (kd != NULL, FALSE); - - GST_LOG_OBJECT (kd, "Handling event on sink pad: %s", + GST_LOG_OBJECT (pad, "Handling event on sink pad: %s", GST_EVENT_TYPE_NAME (event)); switch (GST_EVENT_TYPE (event)) { @@ -444,11 +447,8 @@ gst_kate_dec_src_get_caps (GstPad * pad) GstKateDec *kd = (GstKateDec *) (gst_object_get_parent (GST_OBJECT (pad))); GstCaps *caps; - g_return_val_if_fail (kd != NULL, FALSE); - if (kd->src_caps) { - GST_DEBUG_OBJECT (kd, "We have src caps (%s)", - gst_caps_to_string (kd->src_caps)); + GST_DEBUG_OBJECT (kd, "We have src caps %" GST_PTR_FORMAT, kd->src_caps); caps = kd->src_caps; } else { GST_DEBUG_OBJECT (kd, "We have no src caps, using template caps"); diff --git a/ext/kate/gstkatetiger.c b/ext/kate/gstkatetiger.c index 67d046aaa8..533aef4c8b 100644 --- a/ext/kate/gstkatetiger.c +++ b/ext/kate/gstkatetiger.c @@ -564,8 +564,8 @@ gst_kate_tiger_kate_chain (GstPad * pad, GstBuffer * buf) GST_KATE_TIGER_MUTEX_LOCK (tiger); - GST_LOG_OBJECT (tiger, "Got kate buffer, caps %s", - gst_caps_to_string (GST_BUFFER_CAPS (buf))); + GST_LOG_OBJECT (tiger, "Got kate buffer, caps %" GST_PTR_FORMAT, + GST_BUFFER_CAPS (buf)); /* Unfortunately, it can happen that the start of the stream is not sent, for instance if there's a stream selector upstream, which is switched diff --git a/ext/kate/gstkateutil.c b/ext/kate/gstkateutil.c index 14f4258083..b873d0aca1 100644 --- a/ext/kate/gstkateutil.c +++ b/ext/kate/gstkateutil.c @@ -282,12 +282,10 @@ gst_kate_util_decoder_base_chain_kate_packet (GstKateDecoderBase * decoder, } else { *src_caps = gst_caps_new_simple ("text/x-pango-markup", NULL); } - GST_INFO_OBJECT (element, "Setting src caps to %s", - gst_caps_to_string (*src_caps)); + GST_INFO_OBJECT (srcpad, "Setting caps: %" GST_PTR_FORMAT, *src_caps); if (!gst_pad_set_caps (srcpad, *src_caps)) { - GST_ERROR_OBJECT (element, - "Failed to renegotiate caps for pad %s:%s", - GST_DEBUG_PAD_NAME (srcpad)); + GST_ERROR_OBJECT (srcpad, "Failed to set caps %" GST_PTR_FORMAT, + *src_caps); } } if (decoder->k.ki->language && *decoder->k.ki->language) {