video-track: don't leak restriction caps in _sync_capsfilter_with_track()
authorAurélien Zanelli <aurelien.zanelli@darkosphere.fr>
Sat, 14 May 2016 17:02:57 +0000 (19:02 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 20 Jun 2016 11:34:29 +0000 (12:34 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=766450

ges/ges-video-track.c

index 44fffc54fb6aeee8112d332164dc606c8cfbd01e..6064a804717ee7ce1ca56d419683e4c98133770d 100644 (file)
@@ -42,14 +42,15 @@ _sync_capsfilter_with_track (GESTrack * track, GstElement * capsfilter)
   GstStructure *structure;
 
   g_object_get (track, "restriction-caps", &restriction, NULL);
-  if (restriction && gst_caps_get_size (restriction) > 0) {
-
-    structure = gst_caps_get_structure (restriction, 0);
-    if (!gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d))
-      return;
-  } else {
+  if (restriction == NULL)
     return;
-  }
+
+  if (gst_caps_get_size (restriction) == 0)
+    goto done;
+
+  structure = gst_caps_get_structure (restriction, 0);
+  if (!gst_structure_get_fraction (structure, "framerate", &fps_n, &fps_d))
+    goto done;
 
   caps =
       gst_caps_new_simple ("video/x-raw", "framerate", GST_TYPE_FRACTION, fps_n,
@@ -57,6 +58,9 @@ _sync_capsfilter_with_track (GESTrack * track, GstElement * capsfilter)
 
   g_object_set (capsfilter, "caps", caps, NULL);
   gst_caps_unref (caps);
+
+done:
+  gst_caps_unref (restriction);
 }
 
 static void