struct simple_track *simple_track_new(struct track_info *ti) { struct simple_track *t = xnew(struct simple_track, 1); track_info_ref(ti); simple_track_init(t, ti); return t; }
static int update_cb(void *data, struct track_info *ti) { struct update_data *d = data; if (d->size == d->used) { if (d->size == 0) d->size = 16; d->size *= 2; d->ti = xrealloc(d->ti, d->size * sizeof(struct track_info *)); } track_info_ref(ti); d->ti[d->used++] = ti; return 0; }
static void views_add_track(struct track_info *ti) { struct tree_track *track = xnew(struct tree_track, 1); /* NOTE: does not ref ti */ simple_track_init((struct simple_track *)track, ti); /* both the hash table and views have refs */ track_info_ref(ti); tree_add_track(track); shuffle_add(track); editable_add(&lib_editable, (struct simple_track *)track); }