diff options
| author | Philip Paeps <philip@FreeBSD.org> | 2007-02-21 12:27:12 +0000 |
|---|---|---|
| committer | Philip Paeps <philip@FreeBSD.org> | 2007-02-21 12:27:12 +0000 |
| commit | 0754972c5c72adff156ec736d2f4ebc57776e1ae (patch) | |
| tree | 8f2df30a1e9c79b8e09d7dc29d55cee093923b96 /sys/dev/syscons/logo | |
| parent | 9fad4c2a128e0db65a32641d74158bb00269b082 (diff) | |
Notes
Diffstat (limited to 'sys/dev/syscons/logo')
| -rw-r--r-- | sys/dev/syscons/logo/logo_saver.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/dev/syscons/logo/logo_saver.c b/sys/dev/syscons/logo/logo_saver.c index 0a75886388ba..20f2bdcef02a 100644 --- a/sys/dev/syscons/logo/logo_saver.c +++ b/sys/dev/syscons/logo/logo_saver.c @@ -42,6 +42,12 @@ #define SAVER_NAME "logo_saver" +#define SET_ORIGIN(adp, o) do { \ + int oo = o; \ + if (oo != last_origin) \ + set_origin(adp, last_origin = oo); \ + } while (0) + extern unsigned int logo_w; extern unsigned int logo_h; extern unsigned char logo_pal[]; @@ -56,10 +62,11 @@ static void logo_blit(video_adapter_t *adp, int x, int y) { int d, l, o, p; + int last_origin = -1; for (o = 0, p = y * bpsl + x; p > banksize; p -= banksize) o += banksize; - set_origin(adp, o); + SET_ORIGIN(adp, o); for (d = 0; d < logo_img_size; d += logo_w) { if (p + logo_w < banksize) { @@ -68,12 +75,12 @@ logo_blit(video_adapter_t *adp, int x, int y) } else if (p < banksize) { l = banksize - p; bcopy(logo_img + d, vid + p, l); - set_origin(adp, (o += banksize)); + SET_ORIGIN(adp, (o += banksize)); bcopy(logo_img + d + l, vid, logo_w - l); p += bpsl - banksize; } else { p -= banksize; - set_origin(adp, (o += banksize)); + SET_ORIGIN(adp, (o += banksize)); bcopy(logo_img + d, vid + p, logo_w); p += bpsl; } |
