diff --git a/ges/ges-timeline.c b/ges/ges-timeline.c index 4a9f418693..26ed9904a2 100644 --- a/ges/ges-timeline.c +++ b/ges/ges-timeline.c @@ -1048,22 +1048,15 @@ ges_timeline_emit_snapping (GESTimeline * timeline, GESTrackElement * elem1, g_assert (elem1 != elem2); - if (last_snap_ts != snap_time) { + if (GST_CLOCK_TIME_IS_VALID (last_snap_ts)) g_signal_emit (timeline, ges_timeline_signals[SNAPING_ENDED], 0, priv->last_snaped1, priv->last_snaped2, (last_snap_ts)); - /* We want the snap start signal to be emited anyway */ - timeline->priv->last_snap_ts = GST_CLOCK_TIME_NONE; - } - - if (!GST_CLOCK_TIME_IS_VALID (timeline->priv->last_snap_ts)) { - priv->last_snaped1 = elem1; - priv->last_snaped2 = elem2; - timeline->priv->last_snap_ts = snap_time; - g_signal_emit (timeline, ges_timeline_signals[SNAPING_STARTED], 0, - elem1, elem2, snap_time); - } - + priv->last_snaped1 = elem1; + priv->last_snaped2 = elem2; + timeline->priv->last_snap_ts = snap_time; + g_signal_emit (timeline, ges_timeline_signals[SNAPING_STARTED], 0, + elem1, elem2, snap_time); } /* Accept @self == NULL, making it use default framerate */ diff --git a/tests/check/python/test_timeline.py b/tests/check/python/test_timeline.py index 5534776b62..bbd9054cd8 100644 --- a/tests/check/python/test_timeline.py +++ b/tests/check/python/test_timeline.py @@ -366,6 +366,7 @@ class TestEditing(common.GESSimpleTimelineTest): ] ]) + # snap to 20 clip.props.start = 18 self.assertTimelineTopology([ [ # Unique layer @@ -375,6 +376,7 @@ class TestEditing(common.GESSimpleTimelineTest): ]) self.assertEqual(self.snapped_at, [20]) + # no snapping clip.props.start = 30 self.assertTimelineTopology([ [ # Unique layer @@ -384,6 +386,7 @@ class TestEditing(common.GESSimpleTimelineTest): ]) self.assertEqual(self.snapped_at, [20, Gst.CLOCK_TIME_NONE]) + # snap to 20 clip.props.start = 18 self.assertTimelineTopology([ [ # Unique layer @@ -391,8 +394,8 @@ class TestEditing(common.GESSimpleTimelineTest): (GES.TestClip, 20, 10), ] ]) - self.assertEqual(self.snapped_at, [20, Gst.CLOCK_TIME_NONE, - Gst.CLOCK_TIME_NONE, 20]) + self.assertEqual(self.snapped_at, [20, Gst.CLOCK_TIME_NONE, 20]) + # snap to 20 again clip.props.start = 19 self.assertTimelineTopology([ [ # Unique layer @@ -400,8 +403,9 @@ class TestEditing(common.GESSimpleTimelineTest): (GES.TestClip, 20, 10), ] ]) - self.assertEqual(self.snapped_at, [20, Gst.CLOCK_TIME_NONE, - Gst.CLOCK_TIME_NONE, 20]) + self.assertEqual( + self.snapped_at, + [20, Gst.CLOCK_TIME_NONE, 20, Gst.CLOCK_TIME_NONE, 20]) def test_rippling_snaps(self): self.timeline.props.auto_transition = True