From 9f202a0a72f4747b7b37c340a27bac0b5b1d313a Mon Sep 17 00:00:00 2001 From: AsociTon Date: Fri, 24 Jul 2020 07:43:05 +0530 Subject: [PATCH] Fix retrieving asset metadata on project reload. Part-of: --- ges/ges-base-xml-formatter.c | 4 ++++ tests/check/python/test_assets.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/ges/ges-base-xml-formatter.c b/ges/ges-base-xml-formatter.c index 7239ba652e..9b763847ff 100644 --- a/ges/ges-base-xml-formatter.c +++ b/ges/ges-base-xml-formatter.c @@ -718,6 +718,10 @@ new_asset_cb (GESAsset * source, GAsyncResult * res, PendingAsset * passet) ges_asset_try_proxy (asset, passet->proxy_id); } + if (passet->metadatas) + ges_meta_container_add_metas_from_string (GES_META_CONTAINER (asset), + passet->metadatas); + /* And now add to the project */ ges_project_add_asset (self->project, asset); gst_object_unref (self); diff --git a/tests/check/python/test_assets.py b/tests/check/python/test_assets.py index a7681fd479..4531dbb6d4 100644 --- a/tests/check/python/test_assets.py +++ b/tests/check/python/test_assets.py @@ -100,3 +100,32 @@ class TestTimeline(GESSimpleTimelineTest): GES.Asset.needs_reload(GES.UriClip, uri) GES.Asset.request_async(GES.UriClip, uri, None, asset_loaded_cb, mainloop) mainloop.run() + + def test_asset_metadata_on_reload(self): + mainloop = GLib.MainLoop() + + unused, xges_path = tempfile.mkstemp(suffix=".xges") + project_uri = Gst.filename_to_uri(os.path.abspath(xges_path)) + + asset_uri = Gst.filename_to_uri(os.path.join(__file__, "../../assets/audio_video.ogg")) + xges = """ + + + + + + + """% {"uri": asset_uri} + with open(xges_path, "w") as xges_file: + xges_file.write(xges) + + + def loaded_cb(project, timeline): + asset = project.list_assets(GES.Extractable)[0] + self.assertEqual(asset.get_meta("foo"), "bar") + mainloop.quit() + + loaded_project = GES.Project(uri=project_uri, extractable_type=GES.Timeline) + loaded_project.connect("loaded", loaded_cb) + timeline = loaded_project.extract() + mainloop.run()