gnlobject_duration_cb (GstElement * gnlobject, GParamSpec * arg
G_GNUC_UNUSED, GESTrackTransition * self)
{
- GESTrackType type = ((GESTrackObject *) self)->track->type;
+ GESTrackTransitionClass *klass;
+
+ klass = GES_TRACK_TRANSITION_GET_CLASS (self);
GST_LOG ("got duration changed signal");
+ klass = GES_TRACK_TRANSITION_GET_CLASS (self);
+ klass->duration_changed (self, gnlobject);
+}
+
+static void
+ges_track_transition_duration_changed (GESTrackTransition * self, GstElement
+ * gnlobject)
+{
+ GESTrackType type;
+ type = ((GESTrackObject *) self)->track->type;
+
if (type == GES_TRACK_TYPE_VIDEO)
ges_track_transition_update_vcontroller (self, gnlobject);
else if (type == GES_TRACK_TYPE_AUDIO) {
self->vcontroller = controller;
self->vcontrol_source = control_source;
- GST_LOG ("controller created, updating");
- ges_track_transition_update_vcontroller (self,
- ((GESTrackObject *) self)->gnlobject);
-
return topbin;
}
self->a_acontrol_source = acontrol_source;
self->a_bcontrol_source = bcontrol_source;
- GST_LOG ("controllers created, updating");
-
- ges_track_transition_update_acontroller (self,
- ((GESTrackObject *) self)->gnlobject);
-
return topbin;
}
return FALSE;
gst_bin_add (GST_BIN (object->gnlobject), element);
+
+ klass->duration_changed (self, object->gnlobject);
return TRUE;
}
track_class->create_gnl_object = ges_track_transition_create_gnl_object;
klass->create_element = ges_track_transition_create_element;
+ klass->duration_changed = ges_track_transition_duration_changed;
}
static void
struct _GESTrackTransitionClass {
GESTrackObjectClass parent_class;
+
/* <public> */
GstElement* (*create_element) (GESTrackTransition *self, GESTrack *track);
+ void (*duration_changed) (GESTrackTransition *self, GstElement
+ *gnlobj);
};
GType ges_track_transition_get_type (void);