asset: unref requested assets
authorHenry Wilkes <hwilkes@igalia.com>
Fri, 1 May 2020 11:40:58 +0000 (12:40 +0100)
committerHenry Wilkes <hwilkes@igalia.com>
Thu, 7 May 2020 09:06:52 +0000 (10:06 +0100)
Prevent a few memory leaks in the tests.

Also mark ges_project_save as transfer full for the formatter asset.

Also make sure that ges_project_request_sync is transfer full on the
returned asset.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/104

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/merge_requests/169>

ges/ges-project.c
tests/check/ges/asset.c
tests/check/ges/backgroundsource.c
tests/check/ges/clip.c
tests/check/ges/group.c
tests/check/ges/layer.c

index 634a38d23ff050893b99a270778a7f9c7abc0c27..67ff95c18a7089c36008b51aa68024ded41d0f0d 100644 (file)
@@ -872,7 +872,7 @@ ges_project_create_asset_sync (GESProject * project, const gchar * id,
   if ((asset = g_hash_table_lookup (project->priv->assets, internal_id))) {
     g_free (internal_id);
 
-    return asset;
+    return gst_object_ref (asset);
   } else if (g_hash_table_lookup (project->priv->loading_assets, internal_id) ||
       g_hash_table_lookup (project->priv->loaded_with_error, internal_id)) {
     g_free (internal_id);
@@ -1059,9 +1059,10 @@ ges_project_list_assets (GESProject * project, GType filter)
  * @project: A #GESProject to save
  * @timeline: The #GESTimeline to save, it must have been extracted from @project
  * @uri: The uri where to save @project and @timeline
- * @formatter_asset: (allow-none): The formatter asset to use or %NULL. If %NULL,
- * will try to save in the same format as the one from which the timeline as been loaded
- * or default to the best formatter as defined in #ges_find_formatter_for_uri
+ * @formatter_asset: (transfer full) (allow-none): The formatter asset to
+ * use or %NULL. If %NULL, will try to save in the same format as the one
+ * from which the timeline as been loaded or default to the best formatter
+ * as defined in #ges_find_formatter_for_uri
  * @overwrite: %TRUE to overwrite file if it exists
  * @error: (out) (allow-none): An error to be set in case something wrong happens or %NULL
  *
index 3affc344548b629b97cdb1a89a97e4b7518d479b..d8cb49b7bfec87d050f3e36f53e39a019b6209e2 100644 (file)
@@ -240,6 +240,9 @@ GST_START_TEST (test_uri_clip_change_asset)
   g_free (uri);
   g_free (uri1);
 
+  gst_object_unref (asset1);
+  gst_object_unref (asset);
+
   ges_deinit ();
 }
 
index c9681c0785f8fb3c663572ec5ae521922837cfb6..09bdabfe8ddb17b32287d2e01e35e1e24cf7cfc9 100644 (file)
@@ -395,6 +395,7 @@ GST_START_TEST (test_gap_filling_empty_track)
   gap_object_check (gap, 0, 10, 1);
   fail_unless (ges_timeline_commit (timeline));
 
+  gst_object_unref (asset);
   gst_object_unref (timeline);
 }
 
index 261d74aeac88962c98d5ecdecd91aef275cd7bfd..9a1ad34b87bb871e0ce3f268e9f8f3427df24dd2 100644 (file)
@@ -1037,6 +1037,7 @@ GST_START_TEST (test_clip_group_ungroup)
   assert_num_in_track (video_track, 3);
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
@@ -1538,6 +1539,7 @@ GST_START_TEST (test_adding_children_to_track)
       ges_clip_get_top_effect_index (clip, GES_BASE_EFFECT (effect2)));
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
index c5dbc96cdd89174e0b9ee8297ddbc3b7bba824bb..6c6002b243b9f14575e2ce69a4c64d6b4c4eeabb 100644 (file)
@@ -716,6 +716,7 @@ GST_START_TEST (test_group_serialization)
 
   g_free (tmpuri);
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
@@ -848,6 +849,7 @@ GST_START_TEST (test_children_properties_contain)
   free_children_properties (child_props2, num_props2);
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
index db07365a58929414db0901dc6601d97475436895..763e78a0813ef4cd6b425ec4f59ebcda71b0b69c 100644 (file)
@@ -460,6 +460,7 @@ GST_START_TEST (test_single_layer_automatic_transition)
   g_list_free_full (objects, gst_object_unref);
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
@@ -928,6 +929,7 @@ GST_START_TEST (test_multi_layer_automatic_transition)
   ASSERT_OBJECT_REFCOUNT (transition, "layer + timeline", 2);
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }
@@ -1162,6 +1164,7 @@ GST_START_TEST (test_layer_activate_automatic_transition)
 
 
   gst_object_unref (timeline);
+  gst_object_unref (asset);
 
   ges_deinit ();
 }