Commit e6c5410a authored by Guillaume Desmottes's avatar Guillaume Desmottes 🐐 Committed by Tim-Philipp Müller

glmixer: fix caps leak in gst_gl_mixer_pad_sink_getcaps()

Caps refcounting was all wrong in this function. Rewrote it and add some
comments to make it clearer.

Fix caps leaks with the
validate.file.glvideomixer.simple.play_15s.synchronized scenario. Guillaume Desmottes's avatarGuillaume Desmottes <>
parent ce76c66f
......@@ -213,27 +213,27 @@ gst_gl_mixer_pad_sink_getcaps (GstPad * pad, GstGLMixer * mix, GstCaps * filter)
GstCaps *template_caps;
GstCaps *filtered_caps;
GstCaps *returned_caps;
gboolean had_current_caps = TRUE;
template_caps = gst_pad_get_pad_template_caps (pad);
sinkcaps = gst_pad_get_current_caps (pad);
if (sinkcaps == NULL) {
had_current_caps = FALSE;
sinkcaps = template_caps;
sinkcaps = gst_caps_ref (template_caps);
} else {
sinkcaps = gst_caps_merge (sinkcaps, template_caps);
sinkcaps = gst_caps_merge (sinkcaps, gst_caps_ref (template_caps));
filtered_caps = sinkcaps;
if (filter)
if (filter) {
filtered_caps = gst_caps_intersect (sinkcaps, filter);
gst_caps_unref (sinkcaps);
} else {
filtered_caps = sinkcaps; /* pass ownership */
returned_caps = gst_caps_intersect (filtered_caps, template_caps);
if (filter)
gst_caps_unref (filtered_caps);
if (had_current_caps)
gst_caps_unref (template_caps);
gst_caps_unref (template_caps);
gst_caps_unref (filtered_caps);
GST_DEBUG_OBJECT (pad, "returning %" GST_PTR_FORMAT, returned_caps);
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment