diff options
| author | Franklin Wei <frankhwei536@gmail.com> | 2015-02-11 21:44:18 -0500 |
|---|---|---|
| committer | Franklin Wei <frankhwei536@gmail.com> | 2015-02-11 21:44:18 -0500 |
| commit | be8519faaab3dceabdf6f546ecf117cf599aa4d7 (patch) | |
| tree | 1eda343816c70cc97cc8dfaab21b8a3f6005ee57 | |
| parent | b39f7a0657b8147d6a58a0222a61bfb0f9e2b061 (diff) | |
| download | kappa-be8519faaab3dceabdf6f546ecf117cf599aa4d7.zip kappa-be8519faaab3dceabdf6f546ecf117cf599aa4d7.tar.gz kappa-be8519faaab3dceabdf6f546ecf117cf599aa4d7.tar.bz2 kappa-be8519faaab3dceabdf6f546ecf117cf599aa4d7.tar.xz | |
more stuff
| -rw-r--r-- | drivers/gfx.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/gfx.c b/drivers/gfx.c index 0ccb3b2..7a27e40 100644 --- a/drivers/gfx.c +++ b/drivers/gfx.c @@ -24,9 +24,7 @@ const uint16_t *gfx_height = &fb_height; static int cursor_x, cursor_y; uint32_t _gfx_fgcol, _gfx_bgcol; -extern void gfx_clear_packed(void); - -void (*gfx_clear)(void) = &gfx_clear_packed; +void (*gfx_clear)(void); void gfx_set_background(uint32_t col) { @@ -284,19 +282,24 @@ bool gfx_init(struct vbe_info_t *vbe_mode_info) return false; } + set_putchar(gfx_putchar); + set_puts(gfx_puts); + + /* A bit of fragile code here... don't call gfx_reset() before setting gfx_clear! */ + if(fb_stride != fb_bpp * fb_width) { - printf("Pitch != stride * BPP, fill performance might be suboptimal!\n"); gfx_clear = &gfx_clear_unpacked; + gfx_reset(); + printf("Pitch != stride * BPP, fill performance might be suboptimal!\n"); } else { + /* assembly */ + extern void gfx_clear_packed(void); gfx_clear = &gfx_clear_packed; + gfx_reset(); } - gfx_reset(); - set_putchar(gfx_putchar); - set_puts(gfx_puts); - return true; } |