X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=fbgfx;a=blobdiff_plain;f=src%2Fscreen.c;h=ff88268c895d91fcfa03e345de6d8c5cb39eb90a;hp=1f1dfbe1ae1f24ee8bb96876d81773337025ef11;hb=3a148d92224a9ab88a9c602b072d85d4b1b1eddd;hpb=70c067c2da05fb71f3d2de115cefbc225eff3667 diff --git a/src/screen.c b/src/screen.c index 1f1dfbe..ff88268 100644 --- a/src/screen.c +++ b/src/screen.c @@ -45,6 +45,7 @@ void scr_update(void) if(prev) { /* we're in the middle of a transition */ long interval = time_msec - trans_start; if(interval >= trans_dur) { + next->start(trans_dur); prev = 0; cur = next; next = 0; @@ -70,16 +71,23 @@ struct screen *scr_lookup(const char *name) int scr_change(struct screen *s, long trans_time) { + if(!s) return -1; if(s == cur) return 0; if(trans_time && cur) { trans_dur = trans_time / 2; /* half for each part transition out then in */ trans_start = time_msec; + if(cur) cur->stop(trans_dur); + prev = cur; next = s; } else { + if(cur) cur->stop(0); + s->start(0); + cur = s; + prev = 0; } return 0; }