Commit fecac46cf8757dc4f00a7812310e060f3b0c6eb4

Authored by Tom Wai-Hong Tam
Committed by Anatolij Gustschin
1 parent 395166cffb

lcd: Fix BMP decode bug that skips the wrong padded row

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>

Showing 1 changed file with 4 additions and 4 deletions Side-by-side Diff

... ... @@ -675,7 +675,7 @@
675 675 uchar *fb;
676 676 bmp_image_t *bmp=(bmp_image_t *)bmp_image;
677 677 uchar *bmap;
678   - ushort padded_line;
  678 + ushort padded_width;
679 679 unsigned long width, height, byte_width;
680 680 unsigned long pwidth = panel_info.vl_col;
681 681 unsigned colors, bpix, bmp_bpix;
... ... @@ -762,7 +762,7 @@
762 762 }
763 763 #endif
764 764  
765   - padded_line = (width&0x3) ? ((width&~0x3)+4) : (width);
  765 + padded_width = (width&0x3) ? ((width&~0x3)+4) : (width);
766 766  
767 767 #ifdef CONFIG_SPLASH_SCREEN_ALIGN
768 768 splash_align_axis(&x, pwidth, width);
... ... @@ -796,7 +796,7 @@
796 796 fb += sizeof(uint16_t) / sizeof(*fb);
797 797 }
798 798 }
799   - bmap += (width - padded_line);
  799 + bmap += (padded_width - width);
800 800 fb -= (byte_width + lcd_line_length);
801 801 }
802 802 break;
... ... @@ -808,7 +808,7 @@
808 808 for (j = 0; j < width; j++)
809 809 fb_put_word(&fb, &bmap);
810 810  
811   - bmap += (padded_line - width) * 2;
  811 + bmap += (padded_width - width) * 2;
812 812 fb -= (width * 2 + lcd_line_length);
813 813 }
814 814 break;