Move force_rgb_565 up.

Changes to fb_var_screeninfo can cause changes to
fb_fix_screeninfo. So, write back the force changes before fi is
read.

Change-Id: I721a960fa401ac5203ffc90bd3bfa2d7d0cfb292
This commit is contained in:
Aaron Kling
2016-05-26 14:49:33 -05:00
parent 35df638965
commit b9e547e6ac
+29 -21
View File
@@ -124,15 +124,39 @@ static GRSurface* fbdev_init(minui_backend* backend) {
}
}
fb_fix_screeninfo fi;
if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) {
perror("failed to get fb0 info (FBIOGET_FSCREENINFO)");
if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) {
perror("failed to get fb0 info (FBIOGET_VSCREENINFO)");
close(fd);
return NULL;
}
if (ioctl(fd, FBIOGET_VSCREENINFO, &vi) < 0) {
perror("failed to get fb0 info (FBIOGET_VSCREENINFO)");
#ifdef RECOVERY_FORCE_RGB_565
// Changing fb_var_screeninfo can affect fb_fix_screeninfo,
// so this needs done before querying for fi.
printf("Forcing pixel format: RGB_565\n");
vi.blue.offset = 0;
vi.green.offset = 5;
vi.red.offset = 11;
vi.blue.length = 5;
vi.green.length = 6;
vi.red.length = 5;
vi.blue.msb_right = 0;
vi.green.msb_right = 0;
vi.red.msb_right = 0;
vi.transp.offset = 0;
vi.transp.length = 0;
vi.bits_per_pixel = 16;
if (ioctl(fd, FBIOPUT_VSCREENINFO, &vi) < 0) {
perror("failed to put force_rgb_565 fb0 info");
close(fd);
return NULL;
}
#endif
fb_fix_screeninfo fi;
if (ioctl(fd, FBIOGET_FSCREENINFO, &fi) < 0) {
perror("failed to get fb0 info (FBIOGET_FSCREENINFO)");
close(fd);
return NULL;
}
@@ -167,22 +191,6 @@ static GRSurface* fbdev_init(minui_backend* backend) {
memset(bits, 0, fi.smem_len);
#ifdef RECOVERY_FORCE_RGB_565
printf("Forcing pixel format: RGB_565\n");
vi.blue.offset = 0;
vi.green.offset = 5;
vi.red.offset = 11;
vi.blue.length = 5;
vi.green.length = 6;
vi.red.length = 5;
vi.blue.msb_right = 0;
vi.green.msb_right = 0;
vi.red.msb_right = 0;
vi.transp.offset = 0;
vi.transp.length = 0;
vi.bits_per_pixel = 16;
#endif
gr_framebuffer[0].width = vi.xres;
gr_framebuffer[0].height = vi.yres;
gr_framebuffer[0].row_bytes = fi.line_length;