GObjectClass *gobject_class = (GObjectClass *) klass;
GstElementClass *gstelement_class = (GstElementClass *) klass;
- gobject_class->dispose = gst_auto_convert_dispose;
+ gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_auto_convert_dispose);
gobject_class->set_property = gst_auto_convert_set_property;
gobject_class->get_property = gst_auto_convert_get_property;
NULL);
g_list_free (autoconvert->cached_events);
autoconvert->cached_events = NULL;
+
+ if (autoconvert->factories) {
+ gst_plugin_feature_list_free (autoconvert->factories);
+ autoconvert->factories = NULL;
+ }
GST_AUTOCONVERT_UNLOCK (autoconvert);
G_OBJECT_CLASS (parent_class)->dispose (object);
ret = gst_pad_push (internal_srcpad, buffer);
gst_object_unref (internal_srcpad);
+ if (GST_FLOW_IS_FATAL (ret)) {
+ GstElement *child = gst_auto_convert_get_subelement (autoconvert);
+ GST_DEBUG_OBJECT (autoconvert,
+ "Child element %" GST_PTR_FORMAT "returned flow %s", child,
+ gst_flow_get_name (ret));
+ if (child)
+ gst_object_unref (child);
+ }
} else {
GST_ERROR_OBJECT (autoconvert, "Got buffer without an negotiated element,"
" returning not-negotiated");
ret = gst_pad_push_event (internal_sinkpad, event);
gst_object_unref (internal_sinkpad);
} else {
- GST_WARNING_OBJECT (autoconvert, "Got event while not element was selected,"
- "letting through");
+ GST_WARNING_OBJECT (autoconvert,
+ "Got upstream event while no element was selected," "forwarding.");
ret = gst_pad_push_event (autoconvert->sinkpad, event);
}
gst_object_unref (sub_srcpad);
gst_object_unref (subelement);
} else {
- GST_WARNING_OBJECT (autoconvert, "Got query while not element was selected,"
- "letting through");
+ GST_WARNING_OBJECT (autoconvert,
+ "Got upstream query while no element was selected," "forwarding.");
ret = gst_pad_peer_query (autoconvert->sinkpad, query);
}