From ada919fc1122c314b239212a40d15c5ab131becd Mon Sep 17 00:00:00 2001 From: William Wilgus Date: Mon, 26 Oct 2020 14:11:38 -0400 Subject: [PATCH] FIX RED framebuffer viewport rewrite Change-Id: I4cb8f580e15440d06f8d5fabb2fbf5147c67b49c --- apps/plugins/rockboy/lcd.c | 3 +++ firmware/drivers/lcd-bitmap-common.c | 10 +++++----- firmware/target/coldfire/iaudio/x5/lcd-x5.c | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c index 92db851ee8..c53df5ce01 100644 --- a/apps/plugins/rockboy/lcd.c +++ b/apps/plugins/rockboy/lcd.c @@ -885,6 +885,9 @@ void lcd_refreshline(void) return; #endif +#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) + fb_data *lcd_fb = get_framebuffer(); +#endif updatepatpix(); L = R_LY; diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c index 183ab75820..d195fd8ebe 100644 --- a/firmware/drivers/lcd-bitmap-common.c +++ b/firmware/drivers/lcd-bitmap-common.c @@ -332,8 +332,8 @@ static void LCDFN(putsxyofs)(int x, int y, int ofs, const unsigned char *str) static void LCDFN(putsxyofs)(int x, int y, int ofs, const unsigned char *str) { unsigned short *ucs; - struct font* pf = font_get(LCDFN(current_vp)->font); - int vp_flags = current_vp->flags; + struct font* pf = font_get(LCDFN(current_viewport)->font); + int vp_flags = LCDFN(current_viewport)->flags; const unsigned char *bits; int width; @@ -345,13 +345,13 @@ static void LCDFN(putsxyofs)(int x, int y, int ofs, const unsigned char *str) /* center takes precedence */ if (vp_flags & VP_FLAG_ALIGN_CENTER) { - x = ((current_vp->width - w)/ 2) + x; + x = ((LCDFN(current_viewport)->width - w)/ 2) + x; if (x < 0) x = 0; } else { - x = current_vp->width - w - x; + x = LCDFN(current_viewport)->width - w - x; x += ofs; ofs = 0; } @@ -362,7 +362,7 @@ static void LCDFN(putsxyofs)(int x, int y, int ofs, const unsigned char *str) { const unsigned short next_ch = ucs[1]; - if (x >= current_vp->width) + if (x >= LCDFN(current_viewport)->width) break; /* Get proportional width and glyph bits */ diff --git a/firmware/target/coldfire/iaudio/x5/lcd-x5.c b/firmware/target/coldfire/iaudio/x5/lcd-x5.c index cf6e301c16..266a381c40 100644 --- a/firmware/target/coldfire/iaudio/x5/lcd-x5.c +++ b/firmware/target/coldfire/iaudio/x5/lcd-x5.c @@ -494,7 +494,7 @@ void lcd_update(void) lcd_begin_write_gram(); - lcd_write_data((unsigned short *)lcd_framebuffer, LCD_WIDTH*LCD_HEIGHT); + lcd_write_data((unsigned short *)FBADDR(0,0), LCD_WIDTH*LCD_HEIGHT); } /* lcd_update */ /* Update a fraction of the display. */