mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-13 06:43:29 +08:00
cfb_console: align fields in gzipped .bmp files
.bmp files contain 32-bit integers aligned at offsets of +2, +6, et cetera within the bmp_header structure (see include/bmp_layout.h). Support for gzip-compressed .bmp files is present in the cfb_console display subsystem by uncompressing them prior to use. This patch forces the in-memory header to be aligned properly for these compressed images by extracting them to a 2-byte offset in the memory returned by malloc. Since malloc will always return a 4-byte aligned value, this forces the .bmp header fields to be naturally aligned on 4-byte addresses. Refer to these files for more details: doc/README.displaying-bmps Signed-off-by: Eric Nelson <eric.nelson@boundarydevices.com>
This commit is contained in:
parent
73545f75b6
commit
5ca05c8b03
@ -1473,7 +1473,11 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
|
||||
printf("Error: malloc in gunzip failed!\n");
|
||||
return 1;
|
||||
}
|
||||
if (gunzip(dst, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE,
|
||||
/*
|
||||
* NB: we need to force offset of +2
|
||||
* See doc/README.displaying-bmps
|
||||
*/
|
||||
if (gunzip(dst+2, CONFIG_SYS_VIDEO_LOGO_MAX_SIZE-2,
|
||||
(uchar *) bmp_image,
|
||||
&len) != 0) {
|
||||
printf("Error: no valid bmp or bmp.gz image at %lx\n",
|
||||
@ -1489,7 +1493,7 @@ int video_display_bitmap(ulong bmp_image, int x, int y)
|
||||
/*
|
||||
* Set addr to decompressed image
|
||||
*/
|
||||
bmp = (bmp_image_t *) dst;
|
||||
bmp = (bmp_image_t *)(dst+2);
|
||||
|
||||
if (!((bmp->header.signature[0] == 'B') &&
|
||||
(bmp->header.signature[1] == 'M'))) {
|
||||
|
Loading…
Reference in New Issue
Block a user