*/
ges_timeline_signals[DISCOVERY_ERROR] =
g_signal_new ("discovery-error", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST, 0, NULL, NULL, gst_marshal_VOID__OBJECT_BOXED,
- G_TYPE_NONE, 2, GES_TYPE_TIMELINE_FILE_SOURCE, GST_TYPE_G_ERROR);
+ G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_generic,
+ G_TYPE_NONE, 2, GES_TYPE_TIMELINE_FILE_SOURCE, G_TYPE_ERROR);
+
+ /**
+ * GESTimeline::track-objects-snapping:
+ * @timeline: the #GESTimeline
+ * @obj1: the first #GESTrackObject that was snapping.
+ * @obj2: the second #GESTrackObject that was snapping.
+ * @position: the position where the two objects finally snapping.
+ *
+ * Will be emitted when the 2 #GESTrackObject first snapped
+ *
+ * Since: 0.10.XX
+ */
+ ges_timeline_signals[SNAPING_STARTED] =
+ g_signal_new ("snapping-started", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
+ G_TYPE_NONE, 3, GES_TYPE_TRACK_OBJECT, GES_TYPE_TRACK_OBJECT,
+ G_TYPE_UINT64);
+
+ /**
+ * GESTimeline::snapping-end:
+ * @timeline: the #GESTimeline
+ * @obj1: the first #GESTrackObject that was snapping.
+ * @obj2: the second #GESTrackObject that was snapping.
+ * @position: the position where the two objects finally snapping.
+ *
+ * Will be emitted when the 2 #GESTrackObject ended to snap
+ *
+ * Since: 0.10.XX
+ */
+ ges_timeline_signals[SNAPING_ENDED] =
+ g_signal_new ("snapping-ended", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
+ G_TYPE_NONE, 3, GES_TYPE_TRACK_OBJECT, GES_TYPE_TRACK_OBJECT,
+ G_TYPE_UINT64);
}
static void
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
GES_TYPE_TIMELINE, GESTimelinePrivate);
- self->priv->layers = NULL;
- self->priv->tracks = NULL;
- self->priv->duration = 0;
+ priv = self->priv;
+ priv->layers = NULL;
+ priv->tracks = NULL;
+ priv->duration = 0;
+ priv->snapping_distance = 0;
+
+ /* Move context initialization */
+ init_movecontext (&self->priv->movecontext);
+ priv->movecontext.ignore_needs_ctx = FALSE;
+
+ priv->by_start = g_hash_table_new (g_direct_hash, g_direct_equal);
+ priv->by_end = g_hash_table_new (g_direct_hash, g_direct_equal);
+ priv->by_object = g_hash_table_new (g_direct_hash, g_direct_equal);
+ priv->starts_ends = g_sequence_new (g_free);
+ priv->tracksources = g_sequence_new (g_object_unref);
- g_mutex_init (&self->priv->pendingobjects_lock);
- priv->pendingobjects_lock = g_mutex_new ();
++ g_mutex_init (&priv->pendingobjects_lock);
/* New discoverer with a 15s timeout */
- self->priv->discoverer = gst_discoverer_new (15 * GST_SECOND, NULL);
- g_signal_connect (self->priv->discoverer, "finished",
+ priv->discoverer = gst_discoverer_new (15 * GST_SECOND, NULL);
+ g_signal_connect (priv->discoverer, "finished",
G_CALLBACK (discoverer_finished_cb), self);
- g_signal_connect (self->priv->discoverer, "discovered",
+ g_signal_connect (priv->discoverer, "discovered",
G_CALLBACK (discoverer_discovered_cb), self);
- gst_discoverer_start (self->priv->discoverer);
+ gst_discoverer_start (priv->discoverer);
}
/* Private methods */