diff options
author | Thibault Saunier <tsaunier@gnome.org> | 2014-06-05 04:20:15 +0200 |
---|---|---|
committer | Thibault Saunier <tsaunier@gnome.org> | 2014-06-09 16:10:41 +0200 |
commit | 03c87dbbc7d3034dddc39364dd345daa31ff7229 (patch) | |
tree | 975c780f761552e606d921f21b805bbb391bd022 | |
parent | bb4cf62b627a14ec0a49f72ce28e573a1b716664 (diff) |
clip: Fix the ges_clip_set_position function
And enhance the new test
https://bugzilla.gnome.org/show_bug.cgi?id=731248
-rw-r--r-- | ges/ges-clip.c | 13 | ||||
-rw-r--r-- | tests/check/ges/clip.c | 32 | ||||
-rw-r--r-- | tests/check/ges/test-utils.h | 2 |
3 files changed, 35 insertions, 12 deletions
diff --git a/ges/ges-clip.c b/ges/ges-clip.c index e3342050..fbe454e2 100644 --- a/ges/ges-clip.c +++ b/ges/ges-clip.c @@ -1104,7 +1104,7 @@ ges_clip_set_top_effect_index (GESClip * clip, GESBaseEffect * effect, { gint inc; GList *tmp; - guint current_prio; + guint current_prio, min_prio, max_prio; GESTrackElement *track_element; g_return_val_if_fail (GES_IS_CLIP (clip), FALSE); @@ -1112,21 +1112,22 @@ ges_clip_set_top_effect_index (GESClip * clip, GESBaseEffect * effect, track_element = GES_TRACK_ELEMENT (effect); current_prio = _PRIORITY (track_element); - /* FIXME, do we actually want to change what the user is telling us to do? */ - newindex = newindex + MIN_GNL_PRIO; + _get_priority_range (GES_CONTAINER (clip), &min_prio, &max_prio); + + newindex = newindex + min_prio; /* We don't change the priority */ if (current_prio == newindex || (G_UNLIKELY (GES_CLIP (GES_TIMELINE_ELEMENT_PARENT (track_element)) != clip))) return FALSE; - if (newindex > (clip->priv->nb_effects - 1 + MIN_GNL_PRIO)) { + if (newindex > (clip->priv->nb_effects - 1 + min_prio)) { GST_DEBUG ("You are trying to make %p not a top effect", effect); return FALSE; } - if (current_prio > clip->priv->nb_effects + MIN_GNL_PRIO) { - GST_DEBUG ("%p is not a top effect", effect); + if (current_prio > clip->priv->nb_effects + min_prio) { + GST_ERROR ("%p is not a top effect", effect); return FALSE; } diff --git a/tests/check/ges/clip.c b/tests/check/ges/clip.c index 103ad9a4..e33c6118 100644 --- a/tests/check/ges/clip.c +++ b/tests/check/ges/clip.c @@ -432,6 +432,7 @@ GST_START_TEST (test_effects_priorities) GESClip *clip; GESTimeline *timeline; GESTrack *audio_track, *video_track; + GESLayer *layer, *layer1; GESTrackElement *effect, *effect1, *effect2; @@ -445,18 +446,20 @@ GST_START_TEST (test_effects_priorities) fail_unless (ges_timeline_add_track (timeline, audio_track)); fail_unless (ges_timeline_add_track (timeline, video_track)); - effect = GES_TRACK_ELEMENT (ges_effect_new ("identity")); - fail_unless (ges_track_add_element (video_track, effect)); + layer = ges_timeline_append_layer (timeline); + layer1 = ges_timeline_append_layer (timeline); + + ges_layer_add_clip (layer, clip); + + effect = GES_TRACK_ELEMENT (ges_effect_new ("agingtv")); fail_unless (ges_container_add (GES_CONTAINER (clip), GES_TIMELINE_ELEMENT (effect))); - effect1 = GES_TRACK_ELEMENT (ges_effect_new ("identity")); - fail_unless (ges_track_add_element (video_track, effect1)); + effect1 = GES_TRACK_ELEMENT (ges_effect_new ("agingtv")); fail_unless (ges_container_add (GES_CONTAINER (clip), GES_TIMELINE_ELEMENT (effect1))); - effect2 = GES_TRACK_ELEMENT (ges_effect_new ("identity")); - fail_unless (ges_track_add_element (video_track, effect2)); + effect2 = GES_TRACK_ELEMENT (ges_effect_new ("agingtv")); fail_unless (ges_container_add (GES_CONTAINER (clip), GES_TIMELINE_ELEMENT (effect2))); @@ -476,6 +479,23 @@ GST_START_TEST (test_effects_priorities) fail_unless_equals_int (MIN_GNL_PRIO + 1, _PRIORITY (effect1)); fail_unless_equals_int (MIN_GNL_PRIO + 2, _PRIORITY (effect2)); + fail_unless (ges_clip_move_to_layer (clip, layer1)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 0, _PRIORITY (effect)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 1, _PRIORITY (effect1)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 2, _PRIORITY (effect2)); + + fail_unless (ges_clip_set_top_effect_priority (clip, GES_BASE_EFFECT (effect), + 2)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 0, _PRIORITY (effect1)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 1, _PRIORITY (effect2)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 2, _PRIORITY (effect)); + + fail_unless (ges_clip_set_top_effect_priority (clip, GES_BASE_EFFECT (effect), + 0)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 0, _PRIORITY (effect)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 1, _PRIORITY (effect1)); + fail_unless_equals_int (LAYER_HEIGHT + MIN_GNL_PRIO + 2, _PRIORITY (effect2)); + gst_object_unref (timeline); } diff --git a/tests/check/ges/test-utils.h b/tests/check/ges/test-utils.h index 36623020..23db69b6 100644 --- a/tests/check/ges/test-utils.h +++ b/tests/check/ges/test-utils.h @@ -32,6 +32,8 @@ GESPipeline * ges_test_create_pipeline (GESTimeline *timeline); */ #define MIN_GNL_PRIO 2 +#define LAYER_HEIGHT 1000 + gchar * ges_test_get_audio_only_uri (void); gchar * ges_test_get_audio_video_uri (void); gchar * ges_test_get_image_uri (void); |