From a54c4ab7d42c9ef90a5cf10581d072f33968a6c5 Mon Sep 17 00:00:00 2001 From: Amaury Pouly Date: Mon, 11 Nov 2013 02:01:05 +0000 Subject: zen/zenxfi: correctly implement partial redraw Although there is no difference in the cost of a full or partial update, it is preferable that the semantic of lcd_update_rect() be correct. Change-Id: I8a168388b98e0dbd7237729b7fd8a62fa1885be1 --- firmware/target/arm/imx233/creative-zen/lcd-zen.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'firmware/target/arm/imx233/creative-zen') diff --git a/firmware/target/arm/imx233/creative-zen/lcd-zen.c b/firmware/target/arm/imx233/creative-zen/lcd-zen.c index fd7d3e0205..22d643c778 100644 --- a/firmware/target/arm/imx233/creative-zen/lcd-zen.c +++ b/firmware/target/arm/imx233/creative-zen/lcd-zen.c @@ -339,13 +339,15 @@ void lcd_update_rect(int x, int y, int w, int h) if(!lcd_on) return; #endif - uint8_t *p = FRAME; - for(int y = 0; y < LCD_HEIGHT; y++) - for(int x = 0; x < LCD_WIDTH; x++) + for(int yy = y; yy < y + h; yy++) + { + uint16_t *pix = FBADDR(x, yy); + uint8_t *p = 3 * (yy * LCD_WIDTH + x) + (uint8_t *)FRAME; + for(int xx = 0; xx < w; xx++, pix++) { - uint16_t pix = *FBADDR(x,y); - *p++ = RGB_UNPACK_RED(pix); - *p++ = RGB_UNPACK_GREEN(pix); - *p++ = RGB_UNPACK_BLUE(pix); + *p++ = RGB_UNPACK_RED(*pix); + *p++ = RGB_UNPACK_GREEN(*pix); + *p++ = RGB_UNPACK_BLUE(*pix); } + } } -- cgit