struct sync_pt * viv_sync_pt_create( struct viv_sync_timeline * obj, gctSYNC_POINT SyncPoint ) { gceSTATUS status; struct viv_sync_pt * pt; pt = (struct viv_sync_pt *) sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); pt->stamp = obj->stamp++; pt->sync = SyncPoint; /* Dup signal. */ status = gckOS_ReferenceSyncPoint(obj->os, SyncPoint); if (gcmIS_ERROR(status)) { sync_pt_free((struct sync_pt *)pt); return NULL; } return (struct sync_pt *) pt; }
static struct sync_pt * viv_sync_pt_dup( struct sync_pt * sync_pt ) { gceSTATUS status; struct viv_sync_pt *pt; struct viv_sync_pt *src; struct viv_sync_timeline *obj; src = (struct viv_sync_pt *) sync_pt; obj = (struct viv_sync_timeline *) sync_pt->parent; /* Create the new sync_pt. */ pt = (struct viv_sync_pt *) sync_pt_create(&obj->obj, sizeof(struct viv_sync_pt)); pt->stamp = src->stamp; pt->sync = src->sync; /* Reference sync point. */ status = gckOS_ReferenceSyncPoint(obj->os, pt->sync); if (gcmIS_ERROR(status)) { sync_pt_free((struct sync_pt *)pt); return NULL; } return (struct sync_pt *)pt; }