]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
lcd: Fix BMP decode bug that skips the wrong padded row
authorTom Wai-Hong Tam <waihong@chromium.org>
Fri, 28 Sep 2012 15:11:14 +0000 (15:11 +0000)
committerAnatolij Gustschin <agust@denx.de>
Tue, 6 Nov 2012 23:57:22 +0000 (00:57 +0100)
This change fixed 2 things:
 - Rename padded_line to padded_width since it is (width + padded_row) not line.
 - When finished a line, should skip the padded_row that is
   (padded_width - width) instead of (width - padded_width).

Reference: http://en.wikipedia.org/wiki/BMP_file_format
Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org>
Signed-off-by: Simon Glass <sjg@chromium.org>
common/lcd.c

index 4cea04e247d4352ef52761b2ea34eb2c38ecb05c..7c6cb096f783827b6fa347bb62e7a6a71ebd4fdd 100644 (file)
@@ -675,7 +675,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        uchar *fb;
        bmp_image_t *bmp=(bmp_image_t *)bmp_image;
        uchar *bmap;
-       ushort padded_line;
+       ushort padded_width;
        unsigned long width, height, byte_width;
        unsigned long pwidth = panel_info.vl_col;
        unsigned colors, bpix, bmp_bpix;
@@ -762,7 +762,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
        }
 #endif
 
-       padded_line = (width&0x3) ? ((width&~0x3)+4) : (width);
+       padded_width = (width&0x3) ? ((width&~0x3)+4) : (width);
 
 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
        splash_align_axis(&x, pwidth, width);
@@ -796,7 +796,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                                        fb += sizeof(uint16_t) / sizeof(*fb);
                                }
                        }
-                       bmap += (width - padded_line);
+                       bmap += (padded_width - width);
                        fb   -= (byte_width + lcd_line_length);
                }
                break;
@@ -808,7 +808,7 @@ int lcd_display_bitmap(ulong bmp_image, int x, int y)
                        for (j = 0; j < width; j++)
                                fb_put_word(&fb, &bmap);
 
-                       bmap += (padded_line - width) * 2;
+                       bmap += (padded_width - width) * 2;
                        fb   -= (width * 2 + lcd_line_length);
                }
                break;