From 25123570c76f2055d3ae05d79741038c0e23c536 Mon Sep 17 00:00:00 2001 From: Karl Kurbjun Date: Fri, 4 Sep 2009 00:46:24 +0000 Subject: Fix STRIDE macro for multiscreen and add stride support for picture lib. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22615 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd-16bit-vert.c | 6 +++--- firmware/export/lcd.h | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'firmware') diff --git a/firmware/drivers/lcd-16bit-vert.c b/firmware/drivers/lcd-16bit-vert.c index 396e6f88d8..887505766c 100644 --- a/firmware/drivers/lcd-16bit-vert.c +++ b/firmware/drivers/lcd-16bit-vert.c @@ -69,7 +69,7 @@ static struct viewport default_vp = /* The Gigabeat target build requires access to the current fg_pattern in lcd-meg-fx.c */ -#if (!defined(TOSHIBA_GIGABEAT_F)&& !defined(TOSHIBA_GIGABEAT_S)) || defined(SIMULATOR) +#if defined(SIMULATOR) static struct viewport* current_vp IDATA_ATTR = &default_vp; #else struct viewport* current_vp IDATA_ATTR = &default_vp; @@ -853,7 +853,7 @@ void ICODE_ATTR lcd_bitmap_part(const fb_data *src, int src_x, int src_y, /* Draw a full native bitmap */ void lcd_bitmap(const fb_data *src, int x, int y, int width, int height) { - lcd_bitmap_part(src, 0, 0, STRIDE(width, height), x, y, width, height); + lcd_bitmap_part(src, 0, 0, STRIDE(SCREEN_MAIN, width, height), x, y, width, height); } #if !defined(TOSHIBA_GIGABEAT_F) && !defined(TOSHIBA_GIGABEAT_S) \ @@ -914,7 +914,7 @@ void lcd_bitmap_transparent(const fb_data *src, int x, int y, int width, int height) { lcd_bitmap_transparent_part(src, 0, 0, - STRIDE(width, height), x, y, width, height); + STRIDE(SCREEN_MAIN, width, height), x, y, width, height); } #include "lcd-bitmap-common.c" diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 3d391d6685..3f3d8f875f 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -306,13 +306,25 @@ static inline unsigned lcd_color_to_native(unsigned color) #endif /* HAVE_LCD_COLOR */ +enum screen_type { + SCREEN_MAIN +#ifdef HAVE_REMOTE_LCD + ,SCREEN_REMOTE +#endif +}; + /* Frame buffer stride */ +#define STRIDE_REMOTE(w, h) (w) + #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE -#define STRIDE(w, h) (h) +#define STRIDE_MAIN(w, h) (h) #else -#define STRIDE(w, h) (w) +#define STRIDE_MAIN(w, h) (w) #endif +#define STRIDE(screen, w, h) (screen==SCREEN_MAIN?STRIDE_MAIN((w), \ + (h)):STRIDE_REMOTE((w),(h))) + /* Frame buffer dimensions */ #if LCD_DEPTH == 1 #if LCD_PIXELFORMAT == HORIZONTAL_PACKING -- cgit v1.2.3