diff options
author | Kjell Ericson <kjell@haxx.se> | 2002-10-28 20:08:40 +0000 |
---|---|---|
committer | Kjell Ericson <kjell@haxx.se> | 2002-10-28 20:08:40 +0000 |
commit | f7a4b2b0da03d9178975bd612bc5b44e38ee341d (patch) | |
tree | 579ae05033336d4951de2158522f5b1d9e6bf6fd /uisimulator/x11/lcd-x11.c | |
parent | cacb758a478f5aac7e0f9fb55d4bfb9889cc00a8 (diff) |
Changed XPoint to "struct coordinate".
New lcd_update for the player simulator.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2764 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator/x11/lcd-x11.c')
-rw-r--r-- | uisimulator/x11/lcd-x11.c | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/uisimulator/x11/lcd-x11.c b/uisimulator/x11/lcd-x11.c index a5cc5c0965..1b9949b26b 100644 --- a/uisimulator/x11/lcd-x11.c +++ b/uisimulator/x11/lcd-x11.c @@ -37,24 +37,23 @@ */ #include "lcd-x11.h" +#include "lcd-playersim.h" extern unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8]; extern void screen_resized(int width, int height); extern Display *dpy; +#ifdef HAVE_LCD_BITMAP unsigned char lcd_framebuffer_copy[LCD_WIDTH][LCD_HEIGHT/8]; -/* this is in uibasic.c */ -extern void drawdots(int color, XPoint *points, int count); - void lcd_update (void) { int x, y; int p=0; int bit; - XPoint points[LCD_WIDTH * LCD_HEIGHT]; + struct coordinate points[LCD_WIDTH * LCD_HEIGHT]; int cp=0; - XPoint clearpoints[LCD_WIDTH * LCD_HEIGHT]; + struct coordinate clearpoints[LCD_WIDTH * LCD_HEIGHT]; for(y=0; y<LCD_HEIGHT; y+=8) { for(x=0; x<LCD_WIDTH; x++) { @@ -86,7 +85,7 @@ void lcd_update (void) drawdots(0, &clearpoints[0], cp); drawdots(1, &points[0], p); - /* printf("lcd_update: Draws %d pixels, clears %d pixels (max %d/%d)\n", +/* printf("lcd_update: Draws %d pixels, clears %d pixels (max %d/%d)\n", p, cp, p+cp, LCD_HEIGHT*LCD_WIDTH); */ XSync(dpy,False); } @@ -102,8 +101,8 @@ void lcd_update_rect(int x_start, int y_start, int cp=0; int xmax; int ymax; - XPoint points[LCD_WIDTH * LCD_HEIGHT]; - XPoint clearpoints[LCD_WIDTH * LCD_HEIGHT]; + struct coordinate points[LCD_WIDTH * LCD_HEIGHT]; + struct coordinate clearpoints[LCD_WIDTH * LCD_HEIGHT]; /* The Y coordinates have to work on even 8 pixel rows */ ymax = (yline + height)/8; @@ -150,7 +149,37 @@ void lcd_update_rect(int x_start, int y_start, /* printf("lcd_update_rect: Draws %d pixels, clears %d pixels\n", p, cp);*/ XSync(dpy,False); } +#endif +#ifdef HAVE_LCD_CHARCELLS + +/* Defined in lcd-playersim.c */ +extern void lcd_print_char(int x, int y); +extern unsigned char lcd_buffer[2][11]; +extern void drawrect(int color, int x1, int y1, int x2, int y2); +extern bool lcd_display_redraw; + +static unsigned char lcd_buffer_copy[2][11]; + +void lcd_update (void) +{ + bool changed=false; + int x, y; + for (y=0; y<2; y++) { + for (x=0; x<11; x++) { + if (lcd_display_redraw || + lcd_buffer_copy[y][x] != lcd_buffer[y][x]) { + lcd_buffer_copy[y][x] = lcd_buffer[y][x]; + lcd_print_char(x, y); + changed=true; + } + } + } + if (changed) + XSync(dpy,False); + lcd_display_redraw=false; +} +#endif /* ----------------------------------------------------------------- * local variables: * eval: (load-file "../../firmware/rockbox-mode.el") |