5 static struct demoscreen *act_tail;
7 void regscr_testa(void);
8 void regscr_testb(void);
10 int dsys_init(const char *fname)
17 for(i=0; i<dsys_num_screens; i++) {
18 if(dsys_screens[i]->init() == -1) {
19 fprintf(stderr, "failed to initialize demo screen: %s\n", dsys_screens[i]->name);
27 void dsys_destroy(void)
31 for(i=0; i<dsys_num_screens; i++) {
32 if(dsys_screens[i]->destroy) {
33 dsys_screens[i]->destroy();
39 struct demoscreen *dsys_find_screen(const char *name)
43 for(i=0; i<dsys_num_screens; i++) {
44 if(strcmp(dsys_screens[i]->name, name) == 0) {
45 return dsys_screens[i];
51 void dsys_run_screen(struct demoscreen *scr)
53 struct demoscreen *act;
56 if(dsys_act_scr == scr && act_tail == scr) return;
60 if(act->stop) act->stop();
63 dsys_act_scr = act_tail = scr;
64 if(scr->start) scr->start();
75 void dsys_seek_abs(long tm)
79 void dsys_seek_rel(long dt)
83 void dsys_seek_norm(float t)
87 int dsys_add_screen(struct demoscreen *scr)
89 if(!scr->name || !scr->init || !scr->draw) {
90 fprintf(stderr, "dsys_add_screen: invalid screen\n");
93 dsys_screens[dsys_num_screens++] = scr;