timeline-layer: Handle project when adding a GESTimelineObject directly
authorThibault Saunier <thibault.saunier@collabora.com>
Mon, 17 Dec 2012 20:06:33 +0000 (17:06 -0300)
committerThibault Saunier <thibault.saunier@collabora.com>
Sat, 29 Dec 2012 22:36:51 +0000 (19:36 -0300)
ges/ges-timeline-layer.c

index 249eeed..dd63aef 100644 (file)
@@ -712,8 +712,28 @@ new_asset_cb (GESAsset * source, GAsyncResult * res, NewAssetUData * udata)
       "setting its asset", udata->object);
 
   if (error) {
+    GESProject *project = udata->layer->timeline ?
+        GES_PROJECT (ges_extractable_get_asset (GES_EXTRACTABLE
+            (udata->layer->timeline))) : NULL;
+    if (project) {
+      gchar *possible_id;
+
+      possible_id = ges_project_try_updating_id (project, source, error);
+      if (possible_id) {
+        ges_asset_request_async (ges_asset_get_extractable_type (source),
+            possible_id, NULL, (GAsyncReadyCallback) new_asset_cb, udata);
+        g_free (possible_id);
+        return;
+      }
+    }
     GST_ERROR ("Asset could not be created for uri");
   } else {
+    GESProject *project = udata->layer->timeline ?
+        GES_PROJECT (ges_extractable_get_asset (GES_EXTRACTABLE
+            (udata->layer->timeline))) : NULL;
+    ges_extractable_set_asset (GES_EXTRACTABLE (udata->object), asset);
+
+    ges_project_add_asset (project, asset);
     ges_timeline_layer_add_object (udata->layer, udata->object);
   }