summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Saunier <tsaunier@igalia.com>2019-05-25 16:05:00 -0400
committerTim-Philipp Müller <tim@centricular.com>2019-08-14 23:37:58 +0100
commitbb391a39954225b2f9f617d234bb2f629c0f5518 (patch)
tree9c10d3a4d431649711f9f1e14e5cf2d6e8840ca2
parente413abb5ee8f423c4855b74abfd04f404ef19d02 (diff)
element: Properly handle the fact that pasting can return NULL
And fix paste annotation
-rw-r--r--ges/ges-clip.c1
-rw-r--r--ges/ges-timeline-element.c5
-rw-r--r--tests/check/python/test_timeline.py22
3 files changed, 25 insertions, 3 deletions
diff --git a/ges/ges-clip.c b/ges/ges-clip.c
index 222fdf6a..560d6857 100644
--- a/ges/ges-clip.c
+++ b/ges/ges-clip.c
@@ -693,7 +693,6 @@ _paste (GESTimelineElement * element, GESTimelineElement * ref,
if (!ges_layer_add_clip (self->priv->copied_layer, nclip)) {
GST_INFO ("%" GES_FORMAT " could not be pasted to %" GST_TIME_FORMAT,
GES_ARGS (element), GST_TIME_ARGS (paste_position));
- gst_object_unref (nclip);
return NULL;
}
diff --git a/ges/ges-timeline-element.c b/ges/ges-timeline-element.c
index 28c42a84..54837223 100644
--- a/ges/ges-timeline-element.c
+++ b/ges/ges-timeline-element.c
@@ -1825,7 +1825,8 @@ ges_timeline_element_get_track_types (GESTimelineElement * self)
* using ges_timeline_element_copy with recurse=TRUE set,
* otherwise it will fail.
*
- * Returns: (transfer none): Paste @self copying the element
+ * Returns: (transfer full): New element resulting of pasting @self
+ * or %NULL
*
* Since: 1.6.0
*/
@@ -1853,7 +1854,7 @@ ges_timeline_element_paste (GESTimelineElement * self,
g_clear_object (&self->priv->copied_from);
- return g_object_ref (res);
+ return res ? g_object_ref (res) : res;
}
/**
diff --git a/tests/check/python/test_timeline.py b/tests/check/python/test_timeline.py
index ded93f38..5126f13e 100644
--- a/tests/check/python/test_timeline.py
+++ b/tests/check/python/test_timeline.py
@@ -677,6 +677,28 @@ class TestInvalidOverlaps(common.GESSimpleTimelineTest):
]
])
+ def test_copy_paste_overlapping(self):
+ self.track_types = [GES.TrackType.AUDIO]
+ super().setUp()
+ clip = self.append_clip()
+
+ copy = clip.copy(True)
+ self.assertIsNone(copy.paste(copy.props.start))
+ self.assertTimelineTopology([
+ [
+ (GES.TestClip, 0, 10),
+
+ ]
+ ])
+ copy = clip.copy(True)
+ self.assertIsNotNone(copy.paste(copy.props.start + 1))
+ self.assertTimelineTopology([
+ [
+ (GES.TestClip, 0, 10),
+ (GES.TestClip, 1, 10),
+ ]
+ ])
+
def test_move_group_with_overlaping_clips(self):
self.track_types = [GES.TrackType.AUDIO]
super().setUp()