mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-13 03:24:14 +00:00
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.
This commit is contained in:
parent
4b56970d58
commit
992c05f840
3 changed files with 19 additions and 21 deletions
|
@ -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");
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue