1
0
Fork 0
forked from len0rd/rockbox

Do not use lcd_blit_yuv() if MEMORYSIZE <= 2, since mpegplayer won't run anyway (and won't build)

Only affected target: Sansa c200v2

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21453 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rafaël Carré 2009-06-21 14:09:48 +00:00
parent 04451b4369
commit a98c54f5f1
5 changed files with 16 additions and 16 deletions

View file

@ -126,11 +126,13 @@ static const struct plugin_api rockbox_api = {
#if LCD_DEPTH == 16 #if LCD_DEPTH == 16
lcd_bitmap_transparent_part, lcd_bitmap_transparent_part,
lcd_bitmap_transparent, lcd_bitmap_transparent,
#if MEMORYSIZE > 2
lcd_blit_yuv, lcd_blit_yuv,
#if defined(TOSHIBA_GIGABEAT_F) || defined(SANSA_E200) || defined(SANSA_C200) \ #if defined(TOSHIBA_GIGABEAT_F) || defined(SANSA_E200) || defined(SANSA_C200) \
|| defined(IRIVER_H10) || defined(COWON_D2) || defined(PHILIPS_HDD1630) || defined(SANSA_FUZE) || defined(SANSA_E200V2) || defined(IRIVER_H10) || defined(COWON_D2) || defined(PHILIPS_HDD1630) || defined(SANSA_FUZE) || defined(SANSA_E200V2)
lcd_yuv_set_options, lcd_yuv_set_options,
#endif #endif
#endif /* MEMORYSIZE > 2 */
#elif (LCD_DEPTH < 4) && !defined(SIMULATOR) #elif (LCD_DEPTH < 4) && !defined(SIMULATOR)
lcd_blit_mono, lcd_blit_mono,
lcd_blit_grey_phase, lcd_blit_grey_phase,

View file

@ -128,12 +128,12 @@ void* plugin_get_buffer(size_t *buffer_size);
#define PLUGIN_MAGIC 0x526F634B /* RocK */ #define PLUGIN_MAGIC 0x526F634B /* RocK */
/* increase this every time the api struct changes */ /* increase this every time the api struct changes */
#define PLUGIN_API_VERSION 155 #define PLUGIN_API_VERSION 156
/* update this to latest version if a change to the api struct breaks /* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any backwards compatibility (and please take the opportunity to sort in any
new function which are "waiting" at the end of the function table) */ new function which are "waiting" at the end of the function table) */
#define PLUGIN_MIN_API_VERSION 151 #define PLUGIN_MIN_API_VERSION 156
/* plugin return codes */ /* plugin return codes */
enum plugin_status { enum plugin_status {
@ -205,6 +205,7 @@ struct plugin_api {
int x, int y, int width, int height); int x, int y, int width, int height);
void (*lcd_bitmap_transparent)(const fb_data *src, int x, int y, void (*lcd_bitmap_transparent)(const fb_data *src, int x, int y,
int width, int height); int width, int height);
#if MEMORYSIZE > 2
void (*lcd_blit_yuv)(unsigned char * const src[3], void (*lcd_blit_yuv)(unsigned char * const src[3],
int src_x, int src_y, int stride, int src_x, int src_y, int stride,
int x, int y, int width, int height); int x, int y, int width, int height);
@ -212,6 +213,7 @@ struct plugin_api {
|| defined(IRIVER_H10) || defined(COWON_D2) || defined(PHILIPS_HDD1630) || defined(SANSA_FUZE) || defined(SANSA_E200V2) || defined(IRIVER_H10) || defined(COWON_D2) || defined(PHILIPS_HDD1630) || defined(SANSA_FUZE) || defined(SANSA_E200V2)
void (*lcd_yuv_set_options)(unsigned options); void (*lcd_yuv_set_options)(unsigned options);
#endif #endif
#endif /* MEMORYSIZE > 2 */
#elif (LCD_DEPTH < 4) && !defined(SIMULATOR) #elif (LCD_DEPTH < 4) && !defined(SIMULATOR)
void (*lcd_blit_mono)(const unsigned char *data, int x, int by, int width, void (*lcd_blit_mono)(const unsigned char *data, int x, int by, int width,
int bheight, int stride); int bheight, int stride);

View file

@ -132,7 +132,7 @@ static void time_main_update(void)
log_text(str); log_text(str);
} }
#ifdef HAVE_LCD_COLOR #if defined(HAVE_LCD_COLOR) && (MEMORYSIZE > 2)
#if LCD_WIDTH >= LCD_HEIGHT #if LCD_WIDTH >= LCD_HEIGHT
#define YUV_WIDTH LCD_WIDTH #define YUV_WIDTH LCD_WIDTH
@ -353,7 +353,7 @@ enum plugin_status plugin_start(const void* parameter)
log_text("Main LCD Update"); log_text("Main LCD Update");
time_main_update(); time_main_update();
#ifdef HAVE_LCD_COLOR #if defined(HAVE_LCD_COLOR) && (MEMORYSIZE > 2)
log_text("Main LCD YUV"); log_text("Main LCD YUV");
time_main_yuv(); time_main_yuv();
#endif #endif

View file

@ -151,11 +151,13 @@ extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string,
/* performance function */ /* performance function */
#if defined(HAVE_LCD_COLOR) #if defined(HAVE_LCD_COLOR)
#if MEMORYSIZE > 2
#define LCD_YUV_DITHER 0x1 #define LCD_YUV_DITHER 0x1
extern void lcd_yuv_set_options(unsigned options); extern void lcd_yuv_set_options(unsigned options);
extern void lcd_blit_yuv(unsigned char * const src[3], extern void lcd_blit_yuv(unsigned char * const src[3],
int src_x, int src_y, int stride, int src_x, int src_y, int stride,
int x, int y, int width, int height); int x, int y, int width, int height);
#endif /* MEMORYSIZE > 2 */
#else #else
extern void lcd_blit_mono(const unsigned char *data, int x, int by, int width, extern void lcd_blit_mono(const unsigned char *data, int x, int by, int width,
int bheight, int stride); int bheight, int stride);

View file

@ -30,7 +30,9 @@ static bool lcd_busy = false;
#endif #endif
/* Display status */ /* Display status */
#if MEMORYSIZE > 2
static unsigned lcd_yuv_options SHAREDBSS_ATTR = 0; static unsigned lcd_yuv_options SHAREDBSS_ATTR = 0;
#endif
static bool is_lcd_enabled = true; static bool is_lcd_enabled = true;
/* LCD command set for Samsung S6B33B2 */ /* LCD command set for Samsung S6B33B2 */
@ -328,6 +330,7 @@ void lcd_set_flip(bool yesno)
/*** update functions ***/ /*** update functions ***/
#if MEMORYSIZE > 2
void lcd_yuv_set_options(unsigned options) void lcd_yuv_set_options(unsigned options)
{ {
lcd_yuv_options = options; lcd_yuv_options = options;
@ -350,10 +353,6 @@ void lcd_blit_yuv(unsigned char * const src[3],
unsigned char const * yuv_src[3]; unsigned char const * yuv_src[3];
off_t z; off_t z;
#ifdef SANSA_C200V2
lcd_busy = true;
#endif
/* Sorry, but width and height must be >= 2 or else */ /* Sorry, but width and height must be >= 2 or else */
width &= ~1; width &= ~1;
height >>= 1; height >>= 1;
@ -377,9 +376,8 @@ void lcd_blit_yuv(unsigned char * const src[3],
lcd_send_command(R_Y_ADDR_AREA, y); lcd_send_command(R_Y_ADDR_AREA, y);
lcd_send_command(y + 1, 0); lcd_send_command(y + 1, 0);
#ifndef SANSA_C200V2 // TODO
lcd_write_yuv420_lines_odither(yuv_src, width, stride, x, y); lcd_write_yuv420_lines_odither(yuv_src, width, stride, x, y);
#endif
yuv_src[0] += stride << 1; /* Skip down two luma lines */ yuv_src[0] += stride << 1; /* Skip down two luma lines */
yuv_src[1] += stride >> 1; /* Skip down one chroma line */ yuv_src[1] += stride >> 1; /* Skip down one chroma line */
yuv_src[2] += stride >> 1; yuv_src[2] += stride >> 1;
@ -394,9 +392,8 @@ void lcd_blit_yuv(unsigned char * const src[3],
lcd_send_command(R_Y_ADDR_AREA, y); lcd_send_command(R_Y_ADDR_AREA, y);
lcd_send_command(y + 1, 0); lcd_send_command(y + 1, 0);
#ifndef SANSA_C200V2 // TODO
lcd_write_yuv420_lines(yuv_src, width, stride); lcd_write_yuv420_lines(yuv_src, width, stride);
#endif
yuv_src[0] += stride << 1; /* Skip down two luma lines */ yuv_src[0] += stride << 1; /* Skip down two luma lines */
yuv_src[1] += stride >> 1; /* Skip down one chroma line */ yuv_src[1] += stride >> 1; /* Skip down one chroma line */
yuv_src[2] += stride >> 1; yuv_src[2] += stride >> 1;
@ -404,11 +401,8 @@ void lcd_blit_yuv(unsigned char * const src[3],
} }
while (--height > 0); while (--height > 0);
} }
#ifdef SANSA_C200V2
lcd_busy = false;
#endif
} }
#endif /* MEMORYSIZE > 2 */
/* Update the display. /* Update the display.
This must be called after all other LCD functions that change the display. */ This must be called after all other LCD functions that change the display. */