diff --git a/apps/plugin.c b/apps/plugin.c index bdb2d64239..48f9dac487 100644 --- a/apps/plugin.c +++ b/apps/plugin.c @@ -7,7 +7,7 @@ * \/ \/ \/ \/ \/ * $Id$ * - * Copyright (C) 2002 Björn Stenberg + * Copyright (C) 2002 Björn Stenberg * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -194,7 +194,7 @@ static const struct plugin_api rockbox_api = { lcd_putsf, lcd_puts_scroll, lcd_scroll_stop, - &lcd_static_framebuffer[0][0], + &lcd_framebuffer, lcd_set_viewport, lcd_set_framebuffer, lcd_bmp_part, @@ -281,7 +281,7 @@ static const struct plugin_api rockbox_api = { lcd_remote_mono_bitmap_part, lcd_remote_mono_bitmap, lcd_remote_putsxy, - &lcd_remote_static_framebuffer[0][0], + &lcd_remote_framebuffer; lcd_remote_update, lcd_remote_update_rect, #if (LCD_REMOTE_DEPTH > 1) diff --git a/apps/plugin.h b/apps/plugin.h index 12b7e68447..12fc5424f1 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -7,7 +7,7 @@ * \/ \/ \/ \/ \/ * $Id$ * - * Copyright (C) 2002 Björn Stenberg + * Copyright (C) 2002 Björn Stenberg * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -155,12 +155,12 @@ int plugin_open(char *plugin, char *parameter); #define PLUGIN_MAGIC 0x526F634B /* RocK */ /* increase this every time the api struct changes */ -#define PLUGIN_API_VERSION 241 +#define PLUGIN_API_VERSION 242 /* update this to latest version if a change to the api struct breaks backwards compatibility (and please take the opportunity to sort in any new function which are "waiting" at the end of the function table) */ -#define PLUGIN_MIN_API_VERSION 241 +#define PLUGIN_MIN_API_VERSION 242 /* 239 Marks the removal of ARCHOS HWCODEC and CHARCELL */ @@ -204,7 +204,7 @@ struct plugin_api { void (*lcd_putsf)(int x, int y, const unsigned char *fmt, ...); bool (*lcd_puts_scroll)(int x, int y, const unsigned char* string); void (*lcd_scroll_stop)(void); - fb_data* lcd_framebuffer; + fb_data** lcd_framebuffer; void (*lcd_set_viewport)(struct viewport* vp); void (*lcd_set_framebuffer)(fb_data *fb); void (*lcd_bmp_part)(const struct bitmap *bm, int src_x, int src_y, @@ -314,7 +314,7 @@ struct plugin_api { void (*lcd_remote_mono_bitmap)(const unsigned char *src, int x, int y, int width, int height); void (*lcd_remote_putsxy)(int x, int y, const unsigned char *string); - fb_remote_data* lcd_remote_framebuffer; + fb_remote_data** lcd_remote_framebuffer; void (*lcd_remote_update)(void); void (*lcd_remote_update_rect)(int x, int y, int width, int height); #if (LCD_REMOTE_DEPTH > 1) diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c index 1fb913fbed..3186fac16d 100644 --- a/apps/plugins/doom/i_video.c +++ b/apps/plugins/doom/i_video.c @@ -1059,7 +1059,7 @@ void I_FinishUpdate (void) for (y = 1; y <= SCREENHEIGHT; y++) { - fb_data *dst = rb->lcd_framebuffer + LCD_WIDTH - y; + fb_data *dst = *rb->lcd_framebuffer + LCD_WIDTH - y; count = SCREENWIDTH; do @@ -1073,7 +1073,7 @@ void I_FinishUpdate (void) else #endif { - fb_data *dst = rb->lcd_framebuffer; + fb_data *dst = *rb->lcd_framebuffer; count = SCREENWIDTH*SCREENHEIGHT; do diff --git a/apps/plugins/fire.c b/apps/plugins/fire.c index fe76cac822..95edbf37c4 100644 --- a/apps/plugins/fire.c +++ b/apps/plugins/fire.c @@ -251,7 +251,7 @@ static inline void fire_draw(struct fire* fire) #ifndef HAVE_LCD_COLOR dest = draw_buffer; #else - dest = rb->lcd_framebuffer + LCD_WIDTH * y + FIRE_XPOS; + dest = *rb->lcd_framebuffer + LCD_WIDTH * y + FIRE_XPOS; #endif end = dest + FIRE_WIDTH; diff --git a/apps/plugins/imageviewer/imageviewer.c b/apps/plugins/imageviewer/imageviewer.c index 8e23787704..37c5838d73 100644 --- a/apps/plugins/imageviewer/imageviewer.c +++ b/apps/plugins/imageviewer/imageviewer.c @@ -526,7 +526,7 @@ static void pan_view_down(struct image_info *info) */ move++, info->y--; rb->memcpy(rgb_linebuf, - rb->lcd_framebuffer + (LCD_HEIGHT - move)*LCD_WIDTH, + *rb->lcd_framebuffer + (LCD_HEIGHT - move)*LCD_WIDTH, LCD_WIDTH*sizeof (fb_data)); } #endif @@ -539,7 +539,7 @@ static void pan_view_down(struct image_info *info) && settings.jpeg_dither_mode == DITHER_DIFFUSION) { /* Cover the first row drawn with previous image data. */ - rb->memcpy(rb->lcd_framebuffer + (LCD_HEIGHT - move)*LCD_WIDTH, + rb->memcpy(*rb->lcd_framebuffer + (LCD_HEIGHT - move)*LCD_WIDTH, rgb_linebuf, LCD_WIDTH*sizeof (fb_data)); info->y++; } diff --git a/apps/plugins/imageviewer/jpeg/yuv2rgb.c b/apps/plugins/imageviewer/jpeg/yuv2rgb.c index 764dc71a47..5504e425e6 100644 --- a/apps/plugins/imageviewer/jpeg/yuv2rgb.c +++ b/apps/plugins/imageviewer/jpeg/yuv2rgb.c @@ -239,12 +239,12 @@ static fb_data (* const pixel_funcs[COLOUR_NUM_MODES][DITHER_NUM_MODES])(void) = /* These defines are used fornormal horizontal strides and vertical strides. */ #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE -#define LCDADDR(x, y) (rb->lcd_framebuffer + LCD_HEIGHT*(x) + (y)) +#define LCDADDR(x, y) (*rb->lcd_framebuffer + LCD_HEIGHT*(x) + (y)) #define ROWENDOFFSET (width*LCD_HEIGHT) #define ROWOFFSET (1) #define COLOFFSET (LCD_HEIGHT) #else -#define LCDADDR(x, y) (rb->lcd_framebuffer + LCD_WIDTH*(y) + (x)) +#define LCDADDR(x, y) (*rb->lcd_framebuffer + LCD_WIDTH*(y) + (x)) #define ROWENDOFFSET (width) #define ROWOFFSET (LCD_WIDTH) #define COLOFFSET (1) diff --git a/apps/plugins/invadrox.c b/apps/plugins/invadrox.c index 57d6fabe8d..0b26581b30 100644 --- a/apps/plugins/invadrox.c +++ b/apps/plugins/invadrox.c @@ -776,12 +776,12 @@ bool aliens_down, aliens_right, hit_left_border, hit_right_border; #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE static inline fb_data get_pixel(int x, int y) { - return rb->lcd_framebuffer[x*LCD_HEIGHT+y]; + return *rb->lcd_framebuffer[x*LCD_HEIGHT+y]; } #else static inline fb_data get_pixel(int x, int y) { - return rb->lcd_framebuffer[ytab[y] + x]; + return *rb->lcd_framebuffer[ytab[y] + x]; } #endif @@ -794,7 +794,7 @@ static const unsigned char shifts[4] = { /* Horizontal packing */ static inline fb_data get_pixel(int x, int y) { - return (rb->lcd_framebuffer[ytab[y] + (x >> 2)] >> shifts[x & 3]) & 3; + return (*rb->lcd_framebuffer[ytab[y] + (x >> 2)] >> shifts[x & 3]) & 3; } #else /* Vertical packing */ @@ -803,7 +803,7 @@ static const unsigned char shifts[4] = { }; static inline fb_data get_pixel(int x, int y) { - return (rb->lcd_framebuffer[ytab[y] + x] >> shifts[y & 3]) & 3; + return (*rb->lcd_framebuffer[ytab[y] + x] >> shifts[y & 3]) & 3; } #endif /* Horizontal/Vertical packing */ diff --git a/apps/plugins/lib/grey_core.c b/apps/plugins/lib/grey_core.c index 55d0684103..9686f1d021 100644 --- a/apps/plugins/lib/grey_core.c +++ b/apps/plugins/lib/grey_core.c @@ -845,7 +845,7 @@ static void grey_screendump_hook(int fd) gsrc = _grey_info.values + _GREY_MULUQ(_grey_info.width, gy); #if LCD_DEPTH == 2 - src = rb->lcd_framebuffer + _GREY_MULUQ(LCD_FBWIDTH, y); + src = *rb->lcd_framebuffer + _GREY_MULUQ(LCD_FBWIDTH, y); do { @@ -876,7 +876,7 @@ static void grey_screendump_hook(int fd) #if LCD_DEPTH == 1 mask = BIT_N(y & 7); - src = rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 3); + src = *rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 3); do { @@ -908,7 +908,7 @@ static void grey_screendump_hook(int fd) #elif LCD_DEPTH == 2 shift = 2 * (y & 3); - src = rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 2); + src = *rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 2); do { @@ -933,7 +933,7 @@ static void grey_screendump_hook(int fd) #if LCD_DEPTH == 2 shift = y & 7; - src = rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 3); + src = *rb->lcd_framebuffer + _GREY_MULUQ(LCD_WIDTH, y >> 3); do { diff --git a/apps/plugins/lib/osd.c b/apps/plugins/lib/osd.c index d2e0fe3e50..97db09cc1e 100644 --- a/apps/plugins/lib/osd.c +++ b/apps/plugins/lib/osd.c @@ -227,7 +227,7 @@ static void * _osd_lcd_init_buffers(struct osd *osd, unsigned flags, osd->back_bitmap_stride = w; #endif /* end stride type selection */ - osd->lcd_bitmap_data = (void *)rb->lcd_framebuffer; + osd->lcd_bitmap_data = (void *)*rb->lcd_framebuffer; osd->back_bitmap_data = buf; osd->maxwidth = w; diff --git a/apps/plugins/lib/xlcd_draw.c b/apps/plugins/lib/xlcd_draw.c index 25ef7518a1..b6ed403353 100644 --- a/apps/plugins/lib/xlcd_draw.c +++ b/apps/plugins/lib/xlcd_draw.c @@ -377,7 +377,7 @@ void xlcd_gray_bitmap_part(const unsigned char *src, int src_x, int src_y, src += stride * src_y + src_x; /* move starting point */ src_end = src + stride * height; - dst = rb->lcd_framebuffer + LCD_WIDTH * y + x; + dst = *rb->lcd_framebuffer + LCD_WIDTH * y + x; do { @@ -444,7 +444,7 @@ void xlcd_color_bitmap_part(const unsigned char *src, int src_x, int src_y, src += 3 * (stride * src_y + src_x); /* move starting point */ src_end = src + 3 * stride * height; - dst = rb->lcd_framebuffer + LCD_WIDTH * y + x; + dst = *rb->lcd_framebuffer + LCD_WIDTH * y + x; do { diff --git a/apps/plugins/lib/xlcd_scroll.c b/apps/plugins/lib/xlcd_scroll.c index e0fead71be..ab9ee1c4cb 100644 --- a/apps/plugins/lib/xlcd_scroll.c +++ b/apps/plugins/lib/xlcd_scroll.c @@ -43,7 +43,7 @@ void xlcd_scroll_left(int count) length = (LCD_WIDTH-count)*LCD_FBHEIGHT; - rb->memmove(rb->lcd_framebuffer, rb->lcd_framebuffer + LCD_HEIGHT*count, + rb->memmove(*rb->lcd_framebuffer, *rb->lcd_framebuffer + LCD_HEIGHT*count, length * sizeof(fb_data)); oldmode = rb->lcd_get_drawmode(); @@ -65,8 +65,8 @@ void xlcd_scroll_right(int count) length = (LCD_WIDTH-count)*LCD_FBHEIGHT; - rb->memmove(rb->lcd_framebuffer + LCD_HEIGHT*count, - rb->lcd_framebuffer, length * sizeof(fb_data)); + rb->memmove(*rb->lcd_framebuffer + LCD_HEIGHT*count, + *rb->lcd_framebuffer, length * sizeof(fb_data)); oldmode = rb->lcd_get_drawmode(); rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); @@ -90,7 +90,7 @@ void xlcd_scroll_up(int count) length = LCD_HEIGHT - count; width = LCD_WIDTH-1; - data = rb->lcd_framebuffer; + data = *rb->lcd_framebuffer; do { rb->memmove(data,data + count,length * sizeof(fb_data)); @@ -119,7 +119,7 @@ void xlcd_scroll_down(int count) length = LCD_HEIGHT - count; width = LCD_WIDTH-1; - data = rb->lcd_framebuffer; + data = *rb->lcd_framebuffer; do { rb->memmove(data + count, data, length * sizeof(fb_data)); @@ -155,7 +155,7 @@ void xlcd_scroll_left(int count) if (blockcount) { - unsigned char *data = rb->lcd_framebuffer; + unsigned char *data = *rb->lcd_framebuffer; unsigned char *data_end = data + LCD_FBWIDTH*LCD_HEIGHT; do @@ -168,7 +168,7 @@ void xlcd_scroll_left(int count) if (bitcount) { int bx, y; - unsigned char *addr = rb->lcd_framebuffer + blocklen; + unsigned char *addr = *rb->lcd_framebuffer + blocklen; #if LCD_DEPTH == 2 unsigned fill = (0x55 * (~rb->lcd_get_background() & 3)) << bitcount; #endif @@ -213,7 +213,7 @@ void xlcd_scroll_right(int count) if (blockcount) { - unsigned char *data = rb->lcd_framebuffer; + unsigned char *data = *rb->lcd_framebuffer; unsigned char *data_end = data + LCD_FBWIDTH*LCD_HEIGHT; do @@ -226,7 +226,7 @@ void xlcd_scroll_right(int count) if (bitcount) { int bx, y; - unsigned char *addr = rb->lcd_framebuffer + blockcount; + unsigned char *addr = *rb->lcd_framebuffer + blockcount; #if LCD_DEPTH == 2 unsigned fill = 0x55 * (~rb->lcd_get_background() & 3); #endif @@ -265,7 +265,7 @@ void xlcd_scroll_left(int count) return; } - data = rb->lcd_framebuffer; + data = *rb->lcd_framebuffer; data_end = data + LCD_WIDTH*LCD_FBHEIGHT; length = LCD_WIDTH - count; @@ -294,7 +294,7 @@ void xlcd_scroll_right(int count) return; } - data = rb->lcd_framebuffer; + data = *rb->lcd_framebuffer; data_end = data + LCD_WIDTH*LCD_FBHEIGHT; length = LCD_WIDTH - count; @@ -328,8 +328,8 @@ void xlcd_scroll_up(int count) length = LCD_HEIGHT - count; - rb->memmove(rb->lcd_framebuffer, - rb->lcd_framebuffer + count * LCD_FBWIDTH, + rb->memmove(*rb->lcd_framebuffer, + *rb->lcd_framebuffer + count * LCD_FBWIDTH, length * LCD_FBWIDTH * sizeof(fb_data)); oldmode = rb->lcd_get_drawmode(); @@ -351,8 +351,8 @@ void xlcd_scroll_down(int count) length = LCD_HEIGHT - count; - rb->memmove(rb->lcd_framebuffer + count * LCD_FBWIDTH, - rb->lcd_framebuffer, + rb->memmove(*rb->lcd_framebuffer + count * LCD_FBWIDTH, + *rb->lcd_framebuffer, length * LCD_FBWIDTH * sizeof(fb_data)); oldmode = rb->lcd_get_drawmode(); @@ -388,8 +388,8 @@ void xlcd_scroll_up(int count) if (blockcount) { - rb->memmove(rb->lcd_framebuffer, - rb->lcd_framebuffer + blockcount * LCD_FBWIDTH, + rb->memmove(*rb->lcd_framebuffer, + *rb->lcd_framebuffer + blockcount * LCD_FBWIDTH, blocklen * LCD_FBWIDTH * sizeof(fb_data)); } if (bitcount) @@ -424,7 +424,7 @@ void xlcd_scroll_up(int count) : /* inputs */ [wide]"r"(LCD_FBWIDTH), [rows]"r"(blocklen), - [addr]"a"(rb->lcd_framebuffer + blocklen * LCD_FBWIDTH), + [addr]"a"(*rb->lcd_framebuffer + blocklen * LCD_FBWIDTH), [cnt] "d"(bitcount), [bkg] "d"(0x55 * (~rb->lcd_get_background() & 3)) : /* clobbers */ @@ -432,7 +432,7 @@ void xlcd_scroll_up(int count) ); #else /* C version */ int x, by; - unsigned char *addr = rb->lcd_framebuffer + blocklen * LCD_FBWIDTH; + unsigned char *addr = *rb->lcd_framebuffer + blocklen * LCD_FBWIDTH; #if LCD_DEPTH == 2 unsigned fill = 0x55 * (~rb->lcd_get_background() & 3); #else @@ -457,7 +457,7 @@ void xlcd_scroll_up(int count) #if LCD_DEPTH == 2 int x, by; - fb_data *addr = rb->lcd_framebuffer + blocklen * LCD_FBWIDTH; + fb_data *addr = *rb->lcd_framebuffer + blocklen * LCD_FBWIDTH; unsigned fill, mask; fill = patterns[rb->lcd_get_background() & 3] << 8; @@ -512,8 +512,8 @@ void xlcd_scroll_down(int count) if (blockcount) { - rb->memmove(rb->lcd_framebuffer + blockcount * LCD_FBWIDTH, - rb->lcd_framebuffer, + rb->memmove(*rb->lcd_framebuffer + blockcount * LCD_FBWIDTH, + *rb->lcd_framebuffer, blocklen * LCD_FBWIDTH * sizeof(fb_data)); } if (bitcount) @@ -548,7 +548,7 @@ void xlcd_scroll_down(int count) : /* inputs */ [wide]"r"(LCD_WIDTH), [rows]"r"(blocklen), - [addr]"a"(rb->lcd_framebuffer + blockcount * LCD_FBWIDTH), + [addr]"a"(*rb->lcd_framebuffer + blockcount * LCD_FBWIDTH), [cnt] "d"(bitcount), [bkg] "d"((0x55 * (~rb->lcd_get_background() & 3)) << bitcount) : /* clobbers */ @@ -556,7 +556,7 @@ void xlcd_scroll_down(int count) ); #else /* C version */ int x, by; - unsigned char *addr = rb->lcd_framebuffer + blockcount * LCD_FBWIDTH; + unsigned char *addr = *rb->lcd_framebuffer + blockcount * LCD_FBWIDTH; #if LCD_DEPTH == 2 unsigned fill = (0x55 * (~rb->lcd_get_background() & 3)) << bitcount; #else @@ -581,7 +581,7 @@ void xlcd_scroll_down(int count) #if LCD_DEPTH == 2 int x, by; - fb_data *addr = rb->lcd_framebuffer + blockcount * LCD_FBWIDTH; + fb_data *addr = *rb->lcd_framebuffer + blockcount * LCD_FBWIDTH; unsigned fill, mask; fill = patterns[rb->lcd_get_background() & 3] >> (8 - bitcount); diff --git a/apps/plugins/lua/rocklib_img.c b/apps/plugins/lua/rocklib_img.c index 1266d60310..da3ef4b52c 100644 --- a/apps/plugins/lua/rocklib_img.c +++ b/apps/plugins/lua/rocklib_img.c @@ -1379,7 +1379,7 @@ RB_WRAP(font_getstringsize) RB_WRAP(lcd_framebuffer) { - rli_wrap(L, rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT); + rli_wrap(L, *rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT); return 1; } diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c index f86a6e55fd..e72d2828e3 100644 --- a/apps/plugins/mpegplayer/mpegplayer.c +++ b/apps/plugins/mpegplayer/mpegplayer.c @@ -821,7 +821,7 @@ static void draw_oriented_mono_bitmap_part(const unsigned char *src, src_y &= 7; src_end = src + width; - dst = rb->lcd_framebuffer + (LCD_WIDTH - y) + x*LCD_WIDTH; + dst = *rb->lcd_framebuffer + (LCD_WIDTH - y) + x*LCD_WIDTH; do { const unsigned char *src_col = src++; @@ -953,7 +953,7 @@ static void draw_oriented_alpha_bitmap_part(const unsigned char *src, fg_pattern = rb->lcd_get_foreground(); /*bg_pattern=*/ rb->lcd_get_background(); - dst_start = rb->lcd_framebuffer + (LCD_WIDTH - y - 1) + x*LCD_WIDTH; + dst_start = *rb->lcd_framebuffer + (LCD_WIDTH - y - 1) + x*LCD_WIDTH; int col, row = height; unsigned data, pixels; unsigned skip_end = (stride - width); diff --git a/apps/plugins/pacbox/pacbox.c b/apps/plugins/pacbox/pacbox.c index 182e4a473a..262ab3e836 100755 --- a/apps/plugins/pacbox/pacbox.c +++ b/apps/plugins/pacbox/pacbox.c @@ -704,7 +704,7 @@ static int gameProc( void ) rb->lcd_blit_pal256( video_buffer, 0, 0, XOFS, YOFS, ScreenWidth, ScreenHeight); #else - blit_display(rb->lcd_framebuffer,video_buffer); + blit_display(*rb->lcd_framebuffer,video_buffer); #endif if (settings.showfps) { diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index 843df5746e..eadf9c3d0a 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c @@ -190,7 +190,7 @@ GREY_INFO_STRUCT #define BUFFER_HEIGHT _grey_info.height typedef unsigned char pix_t; #else /* LCD_DEPTH >= 8 */ -#define LCD_BUF rb->lcd_framebuffer +#define LCD_BUF *rb->lcd_framebuffer #define G_PIX LCD_RGBPACK #define N_PIX LCD_RGBPACK #define G_BRIGHT(y) LCD_RGBPACK(y,y,y) diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c index 3a2238bb60..9e2e3832a3 100644 --- a/apps/plugins/plasma.c +++ b/apps/plugins/plasma.c @@ -201,9 +201,9 @@ int main(void) #ifdef HAVE_LCD_COLOR shades_generate(time++); /* dynamically */ #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) - ptr = (unsigned char*)rb->lcd_framebuffer; + ptr = (unsigned char*)*rb->lcd_framebuffer; #else - ptr = rb->lcd_framebuffer; + ptr = *rb->lcd_framebuffer; #endif #else @@ -237,7 +237,7 @@ int main(void) p4-=sp4; #ifdef HAVE_LCD_COLOR #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) - rb->lcd_blit_pal256( (unsigned char*)rb->lcd_framebuffer, + rb->lcd_blit_pal256( (unsigned char*)*rb->lcd_framebuffer, 0,0,0,0,LCD_WIDTH,LCD_HEIGHT); #else rb->lcd_update(); diff --git a/apps/plugins/puzzles/rockbox.c b/apps/plugins/puzzles/rockbox.c index 9fabbf25d2..ed58bd900a 100644 --- a/apps/plugins/puzzles/rockbox.c +++ b/apps/plugins/puzzles/rockbox.c @@ -1016,7 +1016,7 @@ static void rb_draw_line(void *handle, int x1, int y1, int x2, int y2, } else #endif - draw_antialiased_line(rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); + draw_antialiased_line(*rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); } else { @@ -1294,7 +1294,7 @@ static void rb_draw_poly(void *handle, int *coords, int npoints, x2, y2); } else - draw_antialiased_line(rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); + draw_antialiased_line(*rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); #ifdef DEBUG_MENU if(debug_settings.polyanim) @@ -1319,7 +1319,7 @@ static void rb_draw_poly(void *handle, int *coords, int npoints, x2, y2); } else - draw_antialiased_line(rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); + draw_antialiased_line(*rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, x1, y1, x2, y2); } else { @@ -1474,7 +1474,7 @@ static void rb_blitter_save(void *handle, blitter *bl, int x, int y) trim_rect(&x, &y, &w, &h); - fb_data *fb = zoom_enabled ? zoom_fb : rb->lcd_framebuffer; + fb_data *fb = zoom_enabled ? zoom_fb : *rb->lcd_framebuffer; LOGF("rb_blitter_save(%d, %d, %d, %d)", x, y, w, h); for(int i = 0; i < h; ++i) { @@ -1778,9 +1778,9 @@ static void timer_cb(void) static bool what = false; what = !what; if(what) - rb->lcd_framebuffer[0] = LCD_BLACK; + *rb->lcd_framebuffer[0] = LCD_BLACK; else - rb->lcd_framebuffer[0] = LCD_WHITE; + *rb->lcd_framebuffer[0] = LCD_WHITE; rb->lcd_update(); } #endif @@ -2909,7 +2909,7 @@ static void bench_aa(void) int i = 0; while(*rb->current_tick < next) { - draw_antialiased_line(rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, 0, 0, 20, 31); + draw_antialiased_line(*rb->lcd_framebuffer, LCD_WIDTH, LCD_HEIGHT, 0, 0, 20, 31); ++i; } rb->splashf(HZ, "%d AA lines/sec", i); diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c index 143b8fdfa8..387a88c3df 100644 --- a/apps/plugins/rockboy/lcd.c +++ b/apps/plugins/rockboy/lcd.c @@ -742,9 +742,9 @@ static void spr_scan(void) void lcd_begin(void) { #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) - vdest=(unsigned char*)rb->lcd_framebuffer; + vdest=(unsigned char*)*rb->lcd_framebuffer; #else - vdest=rb->lcd_framebuffer; + vdest=*rb->lcd_framebuffer; #endif #ifdef HAVE_LCD_COLOR @@ -975,9 +975,9 @@ void lcd_refreshline(void) #if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256) if(options.scaling==3) { - rb->lcd_blit_pal256((unsigned char*)rb->lcd_framebuffer,(LCD_WIDTH-160)/2, (LCD_HEIGHT-144)/2, (LCD_WIDTH-160)/2, (LCD_HEIGHT-144)/2, 160, 144); + rb->lcd_blit_pal256((unsigned char*)*rb->lcd_framebuffer,(LCD_WIDTH-160)/2, (LCD_HEIGHT-144)/2, (LCD_WIDTH-160)/2, (LCD_HEIGHT-144)/2, 160, 144); } else { - rb->lcd_blit_pal256((unsigned char*)rb->lcd_framebuffer,0,0,0,0,LCD_WIDTH,LCD_HEIGHT); + rb->lcd_blit_pal256((unsigned char*)*rb->lcd_framebuffer,0,0,0,0,LCD_WIDTH,LCD_HEIGHT); } #else if(options.scaling==3) { diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c index e27cbbe3e7..364176ce2d 100644 --- a/apps/plugins/rockboy/sys_rockbox.c +++ b/apps/plugins/rockboy/sys_rockbox.c @@ -290,7 +290,7 @@ void vid_update(int scanline) else if (fb.mode==2) scanline-=8; scanline_remapped = scanline / 16; - frameb = rb->lcd_framebuffer + scanline_remapped * LCD_WIDTH; + frameb = *rb->lcd_framebuffer + scanline_remapped * LCD_WIDTH; while (cnt < 160) { balance += LCD_WIDTH; if (balance > 0) @@ -316,7 +316,7 @@ void vid_update(int scanline) else if (fb.mode==2) scanline-=8; scanline_remapped = scanline / 4; - frameb = rb->lcd_framebuffer + scanline_remapped * LCD_WIDTH; + frameb = *rb->lcd_framebuffer + scanline_remapped * LCD_WIDTH; while (cnt < 160) { *(frameb++) = (scan.buf[0][cnt]&0x3) | ((scan.buf[1][cnt]&0x3)<<2) | diff --git a/apps/plugins/sdl/src/video/rockbox/SDL_rockboxvideo.c b/apps/plugins/sdl/src/video/rockbox/SDL_rockboxvideo.c index 9d11ae2acc..5e0ccfb167 100644 --- a/apps/plugins/sdl/src/video/rockbox/SDL_rockboxvideo.c +++ b/apps/plugins/sdl/src/video/rockbox/SDL_rockboxvideo.c @@ -639,7 +639,7 @@ SDL_Surface *ROCKBOX_SetVideoMode(_THIS, SDL_Surface *current, this->hidden->w = current->w = width; this->hidden->h = current->h = height; current->pitch = current->w * (bpp / 8); - current->pixels = this->hidden->direct ? rb->lcd_framebuffer : this->hidden->buffer; + current->pixels = this->hidden->direct ? *rb->lcd_framebuffer : this->hidden->buffer; /* We're done */ return(current); @@ -674,7 +674,7 @@ static void flip_pixels(int x, int y, int w, int h) for(int x_0 = x; x_0 < x + w; ++x_0) { /* swap pixels directly in the framebuffer */ - rb->lcd_framebuffer[y_0 * LCD_WIDTH + x_0] = swap16(rb->lcd_framebuffer[y_0 * LCD_WIDTH + x_0]); + *rb->lcd_framebuffer[y_0 * LCD_WIDTH + x_0] = swap16(*rb->lcd_framebuffer[y_0 * LCD_WIDTH + x_0]); } } } @@ -684,7 +684,7 @@ static void blit_rotated(fb_data *src, int x, int y, int w, int h) { for(int y_0 = y; y_0 < y + h; ++y_0) for(int x_0 = x; x_0 < x + w; ++x_0) - rb->lcd_framebuffer[x_0 * LCD_WIDTH + y_0] = src[(LCD_WIDTH - y_0) * LCD_HEIGHT + x_0]; + *rb->lcd_framebuffer[x_0 * LCD_WIDTH + y_0] = src[(LCD_WIDTH - y_0) * LCD_HEIGHT + x_0]; } static void ROCKBOX_UpdateRects(_THIS, int numrects, SDL_Rect *rects) @@ -720,7 +720,7 @@ static void ROCKBOX_UpdateRects(_THIS, int numrects, SDL_Rect *rects) out_bmp.width = LCD_WIDTH; out_bmp.height = LCD_HEIGHT; - out_bmp.data = (char*)rb->lcd_framebuffer; + out_bmp.data = (char*)*rb->lcd_framebuffer; simple_resize_bitmap(&in_bmp, &out_bmp); } else diff --git a/apps/plugins/test_resize.c b/apps/plugins/test_resize.c index 2ab10eb7ee..3e50bdc8cc 100644 --- a/apps/plugins/test_resize.c +++ b/apps/plugins/test_resize.c @@ -65,7 +65,7 @@ enum plugin_status plugin_start(const void* parameter) { (void)parameter; - b = rb->lcd_framebuffer; + b = *rb->lcd_framebuffer; rb->lcd_set_background(LCD_RGBPACK(0,0,0)); rb->lcd_clear_display(); // TODO: Optimizes this by e.g. invalidating rects diff --git a/apps/plugins/xworld/sys.c b/apps/plugins/xworld/sys.c index db01dcc974..0bd1e0dc08 100644 --- a/apps/plugins/xworld/sys.c +++ b/apps/plugins/xworld/sys.c @@ -584,7 +584,7 @@ void sys_copyRect(struct System* sys, uint16_t x, uint16_t y, uint16_t w, uint16 struct bitmap out_bmp; out_bmp.width = LCD_WIDTH; out_bmp.height = LCD_HEIGHT; - out_bmp.data = (unsigned char*) rb->lcd_framebuffer; + out_bmp.data = (unsigned char*) *rb->lcd_framebuffer; #ifdef HAVE_LCD_COLOR if(sys->settings.scaling_quality == 1) @@ -631,25 +631,25 @@ void sys_copyRect(struct System* sys, uint16_t x, uint16_t y, uint16_t w, uint16 { #ifdef HAVE_LCD_COLOR int r, g, b; - fb_data pix = rb->lcd_framebuffer[y * LCD_WIDTH + x]; + fb_data pix = *rb->lcd_framebuffer[y * LCD_WIDTH + x]; #if (LCD_DEPTH > 24) r = 0xff - pix.r; g = 0xff - pix.g; b = 0xff - pix.b; - rb->lcd_framebuffer[y * LCD_WIDTH + x] = (fb_data) { b, g, r, 255 }; + *rb->lcd_framebuffer[y * LCD_WIDTH + x] = (fb_data) { b, g, r, 255 }; #elif (LCD_DEPTH == 24) r = 0xff - pix.r; g = 0xff - pix.g; b = 0xff - pix.b; - rb->lcd_framebuffer[y * LCD_WIDTH + x] = (fb_data) { b, g, r }; + *rb->lcd_framebuffer[y * LCD_WIDTH + x] = (fb_data) { b, g, r }; #else r = RGB_UNPACK_RED (pix); g = RGB_UNPACK_GREEN(pix); b = RGB_UNPACK_BLUE (pix); - rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_RGBPACK(0xff - r, 0xff - g, 0xff - b); + *rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_RGBPACK(0xff - r, 0xff - g, 0xff - b); #endif #else - rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_BRIGHTNESS(0xff - rb->lcd_framebuffer[y * LCD_WIDTH + x]); + *rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_BRIGHTNESS(0xff - *rb->lcd_framebuffer[y * LCD_WIDTH + x]); #endif } } @@ -671,14 +671,14 @@ void sys_copyRect(struct System* sys, uint16_t x, uint16_t y, uint16_t w, uint16 if(prev_frames && orig_fb) { - rb->memcpy(orig_fb, rb->lcd_framebuffer, sizeof(fb_data) * LCD_WIDTH * LCD_HEIGHT); + rb->memcpy(orig_fb, *rb->lcd_framebuffer, sizeof(fb_data) * LCD_WIDTH * LCD_HEIGHT); /* fancy useless slow motion blur */ for(int y = 0; y < LCD_HEIGHT; ++y) { for(int x = 0; x < LCD_WIDTH; ++x) { int r, g, b; - fb_data pix = rb->lcd_framebuffer[y * LCD_WIDTH + x]; + fb_data pix = *rb->lcd_framebuffer[y * LCD_WIDTH + x]; r = RGB_UNPACK_RED (pix); g = RGB_UNPACK_GREEN(pix); b = RGB_UNPACK_BLUE (pix); @@ -695,7 +695,7 @@ void sys_copyRect(struct System* sys, uint16_t x, uint16_t y, uint16_t w, uint16 r /= (BLUR_FRAMES + 1) / 2 * (1 + BLUR_FRAMES + 1); g /= (BLUR_FRAMES + 1) / 2 * (1 + BLUR_FRAMES + 1); b /= (BLUR_FRAMES + 1) / 2 * (1 + BLUR_FRAMES + 1); - rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_RGBPACK(r, g, b); + *rb->lcd_framebuffer[y * LCD_WIDTH + x] = LCD_RGBPACK(r, g, b); } } prev_baseidx -= LCD_WIDTH * LCD_HEIGHT; diff --git a/apps/plugins/zxbox/zxvid_16bpp.c b/apps/plugins/zxbox/zxvid_16bpp.c index 6380d3d7d7..f8482e3147 100644 --- a/apps/plugins/zxbox/zxvid_16bpp.c +++ b/apps/plugins/zxbox/zxvid_16bpp.c @@ -58,7 +58,7 @@ void update_screen(void) byte *scrptr; scrptr = (byte *) SPNM(image); */ - frameb = rb->lcd_framebuffer; + frameb = *rb->lcd_framebuffer; for ( y = 0 ; y < HEIGHT*WIDTH; y++ ){ frameb[y] = FB_SCALARPACK(_16bpp_colors[(unsigned)sp_image[y]]); } @@ -68,7 +68,7 @@ void update_screen(void) int srcx, srcy=0; /* x / y coordinates in source image */ unsigned char* image; image = sp_image + ( (Y_OFF)*(WIDTH) ) + X_OFF; - frameb = rb->lcd_framebuffer; + frameb = *rb->lcd_framebuffer; for(y = 0; y < LCD_HEIGHT; y++) { srcx = 0; /* reset our x counter before each row... */ diff --git a/apps/plugins/zxbox/zxvid_2bpp.c b/apps/plugins/zxbox/zxvid_2bpp.c index 9f98ab4cfb..9772625387 100644 --- a/apps/plugins/zxbox/zxvid_2bpp.c +++ b/apps/plugins/zxbox/zxvid_2bpp.c @@ -51,7 +51,7 @@ void update_screen(void) #if LCD_PIXELFORMAT == HORIZONTAL_PACKING for(y = 0; y < LCD_HEIGHT; y++) { - frameb = rb->lcd_framebuffer + (y) * FB_WIDTH; + frameb = *rb->lcd_framebuffer + (y) * FB_WIDTH; srcx = 0; /* reset our x counter before each row... */ for(x = 0; x < LCD_WIDTH; x++) { @@ -67,7 +67,7 @@ void update_screen(void) int shift; for(y = 0; y < LCD_HEIGHT; y++) { - frameb = rb->lcd_framebuffer + (y/4) * LCD_WIDTH; + frameb = *rb->lcd_framebuffer + (y/4) * LCD_WIDTH; srcx = 0; /* reset our x counter before each row... */ shift = ((y & 3 ) * 2 ); mask = ~pixmask[y & 3]; @@ -84,7 +84,7 @@ void update_screen(void) int shift; for(y = 0; y < LCD_HEIGHT; y++) { - frameb = rb->lcd_framebuffer + (y/8) * LCD_WIDTH; + frameb = *rb->lcd_framebuffer + (y/8) * LCD_WIDTH; srcx = 0; /* reset our x counter before each row... */ shift = (y & 7); mask = ~pixmask[y & 7]; diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 9346a6815b..ae06307dca 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -434,13 +434,12 @@ static inline unsigned fb_to_scalar(fb_data p) #endif /* The actual framebuffer */ extern fb_data *lcd_framebuffer; -extern fb_data lcd_static_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH]; #if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE #define FBADDR(x, y) (lcd_framebuffer + ((x) * LCD_FBHEIGHT) + (y)) #else #define FBADDR(x, y) (lcd_framebuffer + ((y) * LCD_FBWIDTH) + (x)) #endif -#define FRAMEBUFFER_SIZE (sizeof(lcd_static_framebuffer)) +#define FRAMEBUFFER_SIZE (sizeof(fb_data)*LCD_FBWIDTH*LCD_FBHEIGHT) /** Port-specific functions. Enable in port config file. **/ #ifdef HAVE_REMOTE_LCD_AS_MAIN