summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorKarl Kurbjun <kkurbjun@gmail.com>2009-09-04 00:46:24 +0000
committerKarl Kurbjun <kkurbjun@gmail.com>2009-09-04 00:46:24 +0000
commit25123570c76f2055d3ae05d79741038c0e23c536 (patch)
treea2edd8351a611b9cef0aef08c880a994d9e1d75e /firmware
parentf6025186fd1f6d9083c07568bc3d160f3e8774f8 (diff)
downloadrockbox-25123570c76f2055d3ae05d79741038c0e23c536.tar.gz
rockbox-25123570c76f2055d3ae05d79741038c0e23c536.tar.bz2
rockbox-25123570c76f2055d3ae05d79741038c0e23c536.zip
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
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/lcd-16bit-vert.c6
-rw-r--r--firmware/export/lcd.h16
2 files changed, 17 insertions, 5 deletions
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