mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-09 17:05:52 +00:00
TrackObject: Add 'valid' property, Make _set_track() return a bool
This commit is contained in:
parent
9f4f14722d
commit
dc16b626c8
2 changed files with 15 additions and 6 deletions
|
@ -229,9 +229,12 @@ ensure_gnl_object (GESTrackObject * object)
|
|||
GESTrackObjectClass *class;
|
||||
gboolean res;
|
||||
|
||||
if (object->gnlobject)
|
||||
if (object->gnlobject && object->valid)
|
||||
return TRUE;
|
||||
|
||||
/* 1. Create the GnlObject */
|
||||
GST_DEBUG ("Creating GnlObject");
|
||||
|
||||
class = GES_TRACK_OBJECT_GET_CLASS (object);
|
||||
|
||||
if (G_UNLIKELY (class->create_gnl_object == NULL)) {
|
||||
|
@ -250,6 +253,7 @@ ensure_gnl_object (GESTrackObject * object)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/* 2. Fill in the GnlObject */
|
||||
if (res) {
|
||||
GST_DEBUG ("Got a valid GnlObject, now filling it in");
|
||||
|
||||
|
@ -258,19 +262,24 @@ ensure_gnl_object (GESTrackObject * object)
|
|||
object->gnlobject);
|
||||
}
|
||||
|
||||
object->valid = res;
|
||||
|
||||
GST_DEBUG ("Returning res:%d", res);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void
|
||||
gboolean
|
||||
ges_track_object_set_track (GESTrackObject * object, GESTrack * track)
|
||||
{
|
||||
GST_DEBUG ("object:%p, track:%p", object, track);
|
||||
|
||||
object->track = track;
|
||||
|
||||
ensure_gnl_object (object);
|
||||
if (object->track)
|
||||
return ensure_gnl_object (object);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -49,6 +49,8 @@ struct _GESTrackObject {
|
|||
GESTimelineObject *timelineobj; /* The associated timeline object */
|
||||
GESTrack *track; /* The associated Track */
|
||||
|
||||
gboolean valid; /* TRUE if the contents of gnlobject are valid/usable */
|
||||
|
||||
/* Cached values of the gnlobject properties */
|
||||
guint64 start; /* position (in time) of the object in the layer */
|
||||
guint64 inpoint; /* in-point */
|
||||
|
@ -72,9 +74,7 @@ GType ges_track_object_get_type (void);
|
|||
|
||||
GESTrackObject* ges_track_object_new (GESTimelineObject *timelineobj, GESTrack *track);
|
||||
|
||||
/* gboolean ges_track_object_create_gnl_object (GESTrackObject * object); */
|
||||
|
||||
void ges_track_object_set_track (GESTrackObject * object, GESTrack * track);
|
||||
gboolean ges_track_object_set_track (GESTrackObject * object, GESTrack * track);
|
||||
void ges_track_object_set_timeline_object (GESTrackObject * object, GESTimelineObject * tlobject);
|
||||
|
||||
/* Private methods for GESTimelineObject's usage only */
|
||||
|
|
Loading…
Reference in a new issue