+ dsys.screens[dsys.num_screens++] = scr;
+ return 0;
+}
+
+int dsys_add_track(const char *name)
+{
+ struct anm_track trk;
+ int idx;
+
+ if(rb_find(dsys.trackmap, (char*)name)) {
+ fprintf(stderr, "ignoring duplicate track: %s\n", name);
+ return -1;
+ }
+
+ idx = darr_size(dsys.track);
+ darr_push(dsys.track, &trk);
+ darr_pushf(dsys.value, 0);
+
+ if(rb_insert(dsys.trackmap, (char*)name, (void*)(intptr_t)idx) == -1) {
+ fprintf(stderr, "failed to insert to track map: %s\n", name);
+ abort();
+ }