From 1c2784daa683d2de3cdaffae9678284e9173247f Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Fri, 8 Feb 2019 16:44:39 -0300 Subject: [PATCH] clip: Add a method to get the priority of the layer it is in Just an helper method to get the 'priority of a the clip' --- ges/ges-auto-transition.c | 4 ++-- ges/ges-clip.c | 8 ++++++++ ges/ges-clip.h | 4 +++- ges/ges-internal.h | 2 -- ges/ges-timeline.c | 8 ++++---- ges/ges-track-element.c | 9 --------- tests/check/ges/group.c | 10 ---------- 7 files changed, 17 insertions(+), 28 deletions(-) diff --git a/ges/ges-auto-transition.c b/ges/ges-auto-transition.c index 37ea759c65..befea901d5 100644 --- a/ges/ges-auto-transition.c +++ b/ges/ges-auto-transition.c @@ -61,8 +61,8 @@ neighbour_changed_cb (GESClip * clip, GParamSpec * arg G_GNUC_UNUSED, } } - if (_ges_track_element_get_layer_priority (self->next_source) != - _ges_track_element_get_layer_priority (self->previous_source)) { + if (GES_TIMELINE_ELEMENT_LAYER_PRIORITY (self->next_source) != + GES_TIMELINE_ELEMENT_LAYER_PRIORITY (self->previous_source)) { GST_DEBUG_OBJECT (self, "Destroy changed layer"); g_signal_emit (self, auto_transition_signals[DESTROY_ME], 0); return; diff --git a/ges/ges-clip.c b/ges/ges-clip.c index ba8dda4fa6..abbc1dfd60 100644 --- a/ges/ges-clip.c +++ b/ges/ges-clip.c @@ -1018,9 +1018,17 @@ ges_clip_set_layer (GESClip * clip, GESLayer * layer) g_object_notify_by_pspec (G_OBJECT (clip), properties[PROP_LAYER]); } +/** + * ges_clip_get_layer_priority: + * @clip: The clip to get the layer priority from + * + * Returns: The priority of the layer @clip is in, -1 if not in a layer. + */ guint32 ges_clip_get_layer_priority (GESClip * clip) { + g_return_val_if_fail (GES_IS_CLIP (clip), -1); + if (clip->priv->layer == NULL) return -1; diff --git a/ges/ges-clip.h b/ges/ges-clip.h index 0215db0596..848c288d2d 100644 --- a/ges/ges-clip.h +++ b/ges/ges-clip.h @@ -162,7 +162,9 @@ GList * ges_clip_find_track_elements (GESClip * clip, GESTrack * tr GES_API GESLayer* ges_clip_get_layer (GESClip *clip); GES_API -gboolean ges_clip_move_to_layer (GESClip *clip, GESLayer *layer); +gboolean ges_clip_move_to_layer (GESClip *clip, GESLayer *layer); +GES_API +guint32 ges_clip_get_layer_priority (GESClip * clip); /**************************************************** * Effects * diff --git a/ges/ges-internal.h b/ges/ges-internal.h index a6c2dfe35e..7ecdd02c12 100644 --- a/ges/ges-internal.h +++ b/ges/ges-internal.h @@ -353,7 +353,6 @@ G_GNUC_INTERNAL void _ges_container_set_priority_offset (GESContainer * contai ****************************************************/ G_GNUC_INTERNAL void ges_clip_set_layer (GESClip *clip, GESLayer *layer); G_GNUC_INTERNAL gboolean ges_clip_is_moving_from_layer (GESClip *clip); -G_GNUC_INTERNAL guint32 ges_clip_get_layer_priority (GESClip *clip); G_GNUC_INTERNAL void ges_clip_set_moving_from_layer (GESClip *clip, gboolean is_moving); G_GNUC_INTERNAL GESTrackElement* ges_clip_create_track_element (GESClip *clip, GESTrackType type); G_GNUC_INTERNAL GList* ges_clip_create_track_elements (GESClip *clip, GESTrackType type); @@ -369,7 +368,6 @@ G_GNUC_INTERNAL void layer_set_priority (GESLayer * layer, guint p ****************************************************/ #define NLE_OBJECT_TRACK_ELEMENT_QUARK (g_quark_from_string ("nle_object_track_element_quark")) G_GNUC_INTERNAL gboolean ges_track_element_set_track (GESTrackElement * object, GESTrack * track); -G_GNUC_INTERNAL guint32 _ges_track_element_get_layer_priority (GESTrackElement * element); G_GNUC_INTERNAL void ges_track_element_copy_properties (GESTimelineElement * element, GESTimelineElement * elementcopy); diff --git a/ges/ges-timeline.c b/ges/ges-timeline.c index 6bcbbb8f3b..44eb72bdd9 100644 --- a/ges/ges-timeline.c +++ b/ges/ges-timeline.c @@ -1038,7 +1038,7 @@ _create_transitions_on_layer (GESTimeline * timeline, GESLayer * layer, get_toplevel_container (GES_TIMELINE_ELEMENT (next)); /* Only object that are in that layer and track */ - if (_ges_track_element_get_layer_priority (next) != layer_prio || + if (GES_TIMELINE_ELEMENT_LAYER_PRIORITY (next) != layer_prio || (track && track != ges_track_element_get_track (next))) continue; @@ -1119,7 +1119,7 @@ timeline_create_transitions (GESTimeline * timeline, track = ges_track_element_get_track (track_element); layer_node = g_list_find_custom (timeline->layers, - GINT_TO_POINTER (_ges_track_element_get_layer_priority (track_element)), + GINT_TO_POINTER (GES_TIMELINE_ELEMENT_LAYER_PRIORITY (track_element)), (GCompareFunc) find_layer_by_prio); _create_transitions_on_layer (timeline, @@ -1197,7 +1197,7 @@ start_tracking_track_element (GESTimeline * timeline, TrackObjIters *iters; GESTimelinePrivate *priv = timeline->priv; - guint layer_prio = _ges_track_element_get_layer_priority (trackelement); + guint layer_prio = GES_TIMELINE_ELEMENT_LAYER_PRIORITY (trackelement); GList *layer_node = g_list_find_custom (timeline->layers, GINT_TO_POINTER (layer_prio), (GCompareFunc) find_layer_by_prio); GESLayer *layer = layer_node ? layer_node->data : NULL; @@ -2622,7 +2622,7 @@ trackelement_priority_changed_cb (GESTrackElement * child, GESTimelinePrivate *priv = timeline->priv; GList *layer_node = g_list_find_custom (timeline->layers, - GINT_TO_POINTER (_ges_track_element_get_layer_priority (child)), + GINT_TO_POINTER (GES_TIMELINE_ELEMENT_LAYER_PRIORITY (child)), (GCompareFunc) find_layer_by_prio); GESLayer *layer = layer_node ? layer_node->data : NULL; TrackObjIters *iters = g_hash_table_lookup (priv->obj_iters, diff --git a/ges/ges-track-element.c b/ges/ges-track-element.c index 3003aff688..f45023cce3 100644 --- a/ges/ges-track-element.c +++ b/ges/ges-track-element.c @@ -828,15 +828,6 @@ ges_track_element_get_all_control_bindings (GESTrackElement * trackelement) return priv->bindings_hashtable; } -guint32 -_ges_track_element_get_layer_priority (GESTrackElement * element) -{ - if (_PRIORITY (element) < LAYER_HEIGHT + MIN_NLE_PRIO) - return 0; - - return (_PRIORITY (element) - MIN_NLE_PRIO) / LAYER_HEIGHT; -} - /** * ges_track_element_get_track: * @object: a #GESTrackElement diff --git a/tests/check/ges/group.c b/tests/check/ges/group.c index 3d200c352f..0184357f0d 100644 --- a/tests/check/ges/group.c +++ b/tests/check/ges/group.c @@ -499,16 +499,6 @@ GST_START_TEST (test_group_in_group) GST_END_TEST; -static guint32 -ges_clip_get_layer_priority (GESClip * clip) -{ - GESLayer *layer = ges_clip_get_layer (clip); - if (layer == NULL) - return -1; - - return ges_layer_get_priority (layer); -} - GST_START_TEST (test_group_in_group_layer_moving) { GESAsset *asset;