GST_DEBUG ("Calling virtual method");
- /* call the create_gnl_object virtual method */
- gnlobject = class->create_gnl_object (object);
+ /* 2. Fill in the GnlObject */
+ if (object->priv->gnlobject == NULL) {
- if (G_UNLIKELY (gnlobject == NULL)) {
- GST_ERROR
- ("'create_gnl_object' implementation returned TRUE but no GnlObject is available");
- goto done;
- }
+ /* call the create_gnl_object virtual method */
+ gnlobject = class->create_gnl_object (object);
- object->priv->gnlobject = gnlobject;
+ if (G_UNLIKELY (gnlobject == NULL)) {
+ GST_ERROR
+ ("'create_gnl_object' implementation returned TRUE but no GnlObject is available");
+ goto done;
+ }
- /* 2. Fill in the GnlObject */
- if (gnlobject) {
- GST_DEBUG ("Got a valid GnlObject, now filling it in");
+ GST_DEBUG_OBJECT (object, "Got a valid GnlObject, now filling it in");
+
+ object->priv->gnlobject = gnlobject;
if (object->priv->timelineobj)
res = ges_timeline_object_fill_track_object (object->priv->timelineobj,
/* Set some properties on the GnlObject */
g_object_set (object->priv->gnlobject,
- "caps", ges_track_get_caps (object->priv->track),
"duration", object->priv->pending_duration,
"media-duration", object->priv->pending_duration,
"start", object->priv->pending_start,
"priority", object->priv->pending_priority,
"active", object->priv->pending_active, NULL);
+ if (object->priv->track != NULL)
+ g_object_set (object->priv->gnlobject,
+ "caps", ges_track_get_caps (object->priv->track), NULL);
+
/* We feed up the props_hashtable if possible */
if (class->get_props_hastable) {
props_hash = class->get_props_hastable (object);
object->priv->track = track;
- if (object->priv->track)
- return ensure_gnl_object (object);
+ if (object->priv->track) {
+ /* If we already have a gnlobject, we just set its caps properly */
+ if (object->priv->gnlobject) {
+ g_object_set (object->priv->gnlobject,
+ "caps", ges_track_get_caps (object->priv->track), NULL);
+ return TRUE;
+ } else {
+ return ensure_gnl_object (object);
+ }
+ }
return TRUE;
}