From 0de6ecebcf85fbe2ccc3449660710452a21803a1 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 8 May 2014 01:15:42 +0200 Subject: [PATCH] scenarios: Check priority before creating a layer. --- tools/ges-validate.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/tools/ges-validate.c b/tools/ges-validate.c index 306df9689a..457d1fb558 100644 --- a/tools/ges-validate.c +++ b/tools/ges-validate.c @@ -160,23 +160,6 @@ _add_asset (GstValidateScenario *scenario, GstValidateAction *action) return ges_project_add_asset(project, asset); } -static gboolean -_add_layer (GstValidateScenario *scenario, GstValidateAction *action) -{ - GESTimeline *timeline = get_timeline(scenario); - GESLayer *layer; - gint priority; - - if (!gst_structure_get_int(action->structure, "priority", &priority)) { - GST_ERROR("priority is needed when adding a layer"); - return FALSE; - } - - layer = ges_layer_new(); - g_object_set(layer, "priority", priority, NULL); - return ges_timeline_add_layer(timeline, layer); -} - /* Unref after usage */ static GESLayer * _get_layer_by_priority(GESTimeline *timeline, gint priority) @@ -199,6 +182,31 @@ _get_layer_by_priority(GESTimeline *timeline, gint priority) return layer; } +static gboolean +_add_layer (GstValidateScenario *scenario, GstValidateAction *action) +{ + GESTimeline *timeline = get_timeline(scenario); + GESLayer *layer; + gint priority; + + if (!gst_structure_get_int(action->structure, "priority", &priority)) { + GST_ERROR("priority is needed when adding a layer"); + return FALSE; + } + + layer = _get_layer_by_priority(timeline, priority); + + if (layer != NULL) { + GST_ERROR("A layer with priority %d already exists, not creating a new one", priority); + gst_object_unref(layer); + return FALSE; + } + + layer = ges_layer_new(); + g_object_set(layer, "priority", priority, NULL); + return ges_timeline_add_layer(timeline, layer); +} + static gboolean _remove_layer (GstValidateScenario *scenario, GstValidateAction *action) {