From bce084f4fdb79d16af26344e11968eb1d1e36c3d Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Wed, 3 Jul 2013 18:33:05 -0400 Subject: [PATCH] timeline-element: Add a method to get the topelevel parent of an element API: ges_timeline_element_get_toplevel_parent --- docs/libs/ges-sections.txt | 1 + ges/ges-timeline-element.c | 21 +++++++++++++++++++++ ges/ges-timeline-element.h | 2 ++ 3 files changed, 24 insertions(+) diff --git a/docs/libs/ges-sections.txt b/docs/libs/ges-sections.txt index 3ef09271ff..4a9eaa12ce 100644 --- a/docs/libs/ges-sections.txt +++ b/docs/libs/ges-sections.txt @@ -374,6 +374,7 @@ ges_timeline_element_ripple_end ges_timeline_element_roll_start ges_timeline_element_roll_end ges_timeline_element_trim +ges_timeline_element_get_toplevel_parent GES_TIMELINE_ELEMENT_PARENT GES_TIMELINE_ELEMENT_TIMELINE GES_TIMELINE_ELEMENT_START diff --git a/ges/ges-timeline-element.c b/ges/ges-timeline-element.c index 0442082303..5fc88b4ab0 100644 --- a/ges/ges-timeline-element.c +++ b/ges/ges-timeline-element.c @@ -832,3 +832,24 @@ ges_timeline_element_copy (GESTimelineElement * self, gboolean deep) return ret; } + +/** + * ges_timeline_element_get_toplevel_parent: + * @self: The #GESTimelineElement to get the toplevel parent from + * + * Gets the toplevel #GESTimelineElement controlling @self + * + * Returns: (transfer full): The toplevel controlling parent of @self + */ +GESTimelineElement * +ges_timeline_element_get_toplevel_parent (GESTimelineElement * self) +{ + GESTimelineElement *toplevel = self; + + g_return_val_if_fail (GES_IS_TIMELINE_ELEMENT (self), NULL); + + while (GES_TIMELINE_ELEMENT_PARENT (toplevel)) + toplevel = GES_TIMELINE_ELEMENT_PARENT (toplevel); + + return gst_object_ref (toplevel); +} diff --git a/ges/ges-timeline-element.h b/ges/ges-timeline-element.h index b2d0173b8a..f495a8ce2f 100644 --- a/ges/ges-timeline-element.h +++ b/ges/ges-timeline-element.h @@ -179,6 +179,8 @@ struct _GESTimelineElementClass GType ges_timeline_element_get_type (void) G_GNUC_CONST; +GESTimelineElement * +ges_timeline_element_get_toplevel_parent (GESTimelineElement *self); GESTimelineElement * ges_timeline_element_get_parent (GESTimelineElement * self); gboolean ges_timeline_element_set_parent (GESTimelineElement *self, GESTimelineElement *parent); gboolean ges_timeline_element_set_timeline (GESTimelineElement *self, GESTimeline *timeline);