summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <thibault.saunier@collabora.com>2012-01-04 15:06:11 -0300
committerThibault Saunier <thibault.saunier@collabora.com>2012-01-11 11:56:17 -0300
commita904904b77d332a177d66b878dd38a0e342add9d (patch)
tree6e06f11a8cb371adfac85b43e73b13a8dcdceca3
parent94a980689341364b984267f46e3000a2e77ab97b (diff)
ges: Handle the new SourceMoved API in PitiviFormatter
-rw-r--r--ges/ges-pitivi-formatter.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/ges/ges-pitivi-formatter.c b/ges/ges-pitivi-formatter.c
index 73a30907..995063e1 100644
--- a/ges/ges-pitivi-formatter.c
+++ b/ges/ges-pitivi-formatter.c
@@ -16,7 +16,8 @@ static gboolean save_pitivi_timeline_to_uri (GESFormatter * pitivi_formatter,
static gboolean load_pitivi_file_from_uri (GESFormatter * self,
GESTimeline * timeline, const gchar * uri);
static void ges_pitivi_formatter_finalize (GObject * object);
-
+static gboolean pitivi_formatter_update_source_uri (GESFormatter * formatter,
+ GESTimelineFileSource * tfs, gchar * new_uri);
typedef struct SrcMapping
{
@@ -80,6 +81,7 @@ ges_pitivi_formatter_class_init (GESPitiviFormatterClass * klass)
formatter_klass->save_to_uri = save_pitivi_timeline_to_uri;
formatter_klass->load_from_uri = load_pitivi_file_from_uri;
+ formatter_klass->update_source_uri = pitivi_formatter_update_source_uri;
object_class->finalize = ges_pitivi_formatter_finalize;
}
@@ -1077,3 +1079,25 @@ load_pitivi_file_from_uri (GESFormatter * self,
xmlFreeDoc (doc);
return ret;
}
+
+static gboolean
+pitivi_formatter_update_source_uri (GESFormatter * formatter,
+ GESTimelineFileSource * tfs, gchar * new_uri)
+{
+ GESTimelineObject *tlobj = GES_TIMELINE_OBJECT (tfs);
+ GESTimelineLayer *layer = ges_timeline_object_get_layer (tlobj);
+ gboolean ret;
+
+ /*Keep a ref to it as we don't want it to be destroyed! */
+ g_object_ref (tlobj);
+
+ ges_timeline_layer_remove_object (layer, tlobj);
+
+ g_object_set (tfs, "uri", new_uri, NULL);
+ ret = ges_timeline_layer_add_object (layer, tlobj);
+
+ /* We do not need our reference anymore */
+ g_object_unref (tlobj);
+
+ return ret;
+}