From 1332ed674a95c495f9790def8c54e951fb53b97e Mon Sep 17 00:00:00 2001 From: Henry Wilkes Date: Tue, 18 Feb 2020 09:17:09 +0000 Subject: [PATCH] layer: fix ownership when failing to add clip If a clip is already part of a layer, then adding it to another layer should fail. Previously, in this case, `ges_layer_add_clip` was adding a reference to the clip instead, without subsequently giving up ownership. This meant that the clip would be left with an unowned reference. This has now been corrected by also calling `unref` after the `ref_sink`. Note that, since `clip` is already part of `current_layer`, it should already be non-floating, so the `ref_sink`-`unref` should do nothing overall. But we keep both to make the ownership (transfer floating/none) explicit. --- ges/ges-layer.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ges/ges-layer.c b/ges/ges-layer.c index 71eccde0e0..9e51010278 100644 --- a/ges/ges-layer.c +++ b/ges/ges-layer.c @@ -631,9 +631,8 @@ ges_layer_add_clip (GESLayer * layer, GESClip * clip) current_layer = ges_clip_get_layer (clip); if (G_UNLIKELY (current_layer)) { GST_WARNING ("Clip %p already belongs to another layer", clip); - /* FIXME: why are we reffing the clip if it belongs to another - * layer? */ gst_object_ref_sink (clip); + gst_object_unref (clip); gst_object_unref (current_layer); return FALSE;