GList *result = NULL, *tmp, *children;
GESClipClass *klass;
guint max_prio, min_prio;
+ gboolean readding_effects_only = TRUE;
g_return_val_if_fail (GES_IS_CLIP (clip), NULL);
for (tmp = children; tmp; tmp = tmp->next) {
GESTrackElement *child = GES_TRACK_ELEMENT (tmp->data);
- if (!GES_IS_BASE_EFFECT (child) && !ges_track_element_get_track (child) &&
- ges_track_element_get_track_type (child) & type) {
+ if (!ges_track_element_get_track (child)
+ && ges_track_element_get_track_type (child) & type) {
GST_DEBUG_OBJECT (clip, "Removing for reusage: %" GST_PTR_FORMAT, child);
- result = g_list_prepend (result, g_object_ref (child));
+ result = g_list_append (result, g_object_ref (child));
ges_container_remove (GES_CONTAINER (clip), tmp->data);
+ if (!GES_IS_BASE_EFFECT (child))
+ readding_effects_only = FALSE;
}
}
g_list_free_full (children, gst_object_unref);
- if (!result) {
- result = klass->create_track_elements (clip, type);
+ if (readding_effects_only) {
+ result = g_list_concat (result, klass->create_track_elements (clip, type));
}
_get_priority_range (GES_CONTAINER (clip), &min_prio, &max_prio);
def test_add_to_layer_with_effect_remove_add(self):
timeline = GES.Timeline.new_audio_video()
- self.assertEqual(len(timeline.get_tracks()), 2)
+ video_track, audio_track = timeline.get_tracks()
layer = timeline.append_layer()
test_clip = GES.TestClip()
self.assertEqual(test_clip.get_children(True), [])
self.assertTrue(layer.add_clip(test_clip))
audio_source = test_clip.find_track_element(None, GES.AudioSource)
- self.assertIsNotNone(audio_source)
+ video_source = test_clip.find_track_element(None, GES.VideoSource)
self.assertTrue(test_clip.set_child_property("volume", 0.0))
self.assertEqual(audio_source.get_child_property("volume")[1], 0.0)
effect = GES.Effect.new("agingtv")
test_clip.add(effect)
+ self.assertEqual(audio_source.props.track, audio_track)
+ self.assertEqual(video_source.props.track, video_track)
+ self.assertEqual(effect.props.track, video_track)
children = test_clip.get_children(True)
layer.remove_clip(test_clip)
self.assertEqual(test_clip.get_children(True), children)
+ self.assertEqual(audio_source.props.track, None)
+ self.assertEqual(video_source.props.track, None)
+ self.assertEqual(effect.props.track, None)
self.assertTrue(layer.add_clip(test_clip))
self.assertEqual(test_clip.get_children(True), children)
+ self.assertEqual(audio_source.props.track, audio_track)
+ self.assertEqual(video_source.props.track, video_track)
+ self.assertEqual(effect.props.track, video_track)
audio_source = test_clip.find_track_element(None, GES.AudioSource)
self.assertFalse(audio_source is None)
self.assertEqual(audio_source.get_child_property("volume")[1], 0.0)
+ self.assertEqual(audio_source.props.track, audio_track)
+ self.assertEqual(video_source.props.track, video_track)
+ self.assertEqual(effect.props.track, video_track)
def test_effects_priority(self):
timeline = GES.Timeline.new_audio_video()