TimelineObject: add a function to sort list of applied effects
authorThibault Saunier <thibault.saunier@collabora.co.uk>
Mon, 31 Jan 2011 10:15:33 +0000 (11:15 +0100)
committerEdward Hervey <edward.hervey@collabora.co.uk>
Fri, 6 May 2011 08:39:00 +0000 (10:39 +0200)
ges/ges-timeline-object.c

index f8a2ad9..5eb4ecc 100644 (file)
@@ -54,6 +54,8 @@ static void
 track_object_priority_changed_cb (GESTrackObject * child,
     GParamSpec * arg G_GNUC_UNUSED, GESTimelineObject * object);
 
+gint sort_track_effects (gpointer a, gpointer b, GESTimelineObject * object);
+
 G_DEFINE_ABSTRACT_TYPE (GESTimelineObject, ges_timeline_object,
     G_TYPE_INITIALLY_UNOWNED);
 
@@ -738,6 +740,30 @@ ges_timeline_object_get_track_objects (GESTimelineObject * object)
   return ret;
 }
 
+gint
+sort_track_effects (gpointer a, gpointer b, GESTimelineObject * object)
+{
+  guint prio_offset_a, prio_offset_b;
+  ObjectMapping *map_a, *map_b;
+  GESTrackObject *obj_a, *obj_b;
+
+  obj_a = GES_TRACK_OBJECT (a);
+  obj_b = GES_TRACK_OBJECT (b);
+
+  map_a = find_object_mapping (object, obj_a);
+  map_b = find_object_mapping (object, obj_b);
+
+  prio_offset_a = map_a->priority_offset;
+  prio_offset_b = map_b->priority_offset;
+
+  if ((gint) prio_offset_a > (guint) prio_offset_b)
+    return 1;
+  if ((guint) prio_offset_a < (guint) prio_offset_b)
+    return -1;
+
+  return 0;
+}
+
 
 /*
  * PROPERTY NOTIFICATIONS FROM TRACK OBJECTS