3 static struct demoscreen *act_tail;
5 void regscr_testa(void);
6 void regscr_testb(void);
8 int dsys_init(const char *fname)
15 for(i=0; i<dsys_num_screens; i++) {
16 if(dsys_screens[i]->init() == -1) {
17 fprintf(stderr, "failed to initialize demo screen: %s\n", dsys_screens[i]->name);
25 void dsys_destroy(void)
29 for(i=0; i<dsys_num_screens; i++) {
30 if(dsys_screens[i]->destroy) {
31 dsys_screens[i]->destroy();
37 struct demoscreen *dsys_find_screen(const char *name)
41 for(i=0; i<dsys_num_screens; i++) {
42 if(strcmp(dsys_screens[i]->name, name) == 0) {
43 return dsys_screens[i];
49 void dsys_run_screen(struct demoscreen *scr)
51 struct demoscreen *act;
54 if(dsys_act_scr == scr && act_tail == scr) return;
58 if(act->stop) act->stop();
61 dsys_act_scr = act_tail = scr;
62 if(scr->start) scr->start();
73 void dsys_seek_abs(long tm)
77 void dsys_seek_rel(long dt)
81 void dsys_seek_norm(float t)
85 int dsys_add_screen(struct demoscreen *scr)
87 if(!scr->name || !scr->init || !scr->draw) {
88 fprintf(stderr, "dsys_add_screen: invalid screen\n");
91 dsys_screens[dsys_num_screens++] = scr;