Handle if EDID returns resolution of 0 and update binary image
diff --git a/qloader2.bin b/qloader2.bin
index 0f517fb2..3c38d75d 100644
Binary files a/qloader2.bin and b/qloader2.bin differ
diff --git a/src/drivers/vbe.c b/src/drivers/vbe.c
index e9fb0e82..31ca8d54 100644
--- a/src/drivers/vbe.c
+++ b/src/drivers/vbe.c
@@ -120,18 +120,20 @@ int init_vbe(uint64_t *framebuffer, uint16_t *pitch, uint16_t *target_width, uin
struct edid_info_struct edid_info;
if (!*target_width || !*target_height || !*target_bpp) {
- *target_bpp = 32;
- if (get_edid_info(&edid_info)) {
- print("vbe: EDID unavailable, defaulting to 1024x768\n");
- *target_width = 1024;
- *target_height = 768;
- } else {
- *target_width = (int)edid_info.det_timing_desc1[2];
- *target_width += ((int)edid_info.det_timing_desc1[4] & 0xf0) << 4;
- *target_height = (int)edid_info.det_timing_desc1[5];
- *target_height += ((int)edid_info.det_timing_desc1[7] & 0xf0) << 4;
- print("vbe: EDID detected screen resolution of %ux%u\n",
- *target_width, *target_height);
+ *target_width = 1024;
+ *target_height = 768;
+ *target_bpp = 32;
+ if (!get_edid_info(&edid_info)) {
+ int edid_width = (int)edid_info.det_timing_desc1[2];
+ edid_width += ((int)edid_info.det_timing_desc1[4] & 0xf0) << 4;
+ int edid_height = (int)edid_info.det_timing_desc1[5];
+ edid_height += ((int)edid_info.det_timing_desc1[7] & 0xf0) << 4;
+ if (edid_width && edid_height) {
+ *target_width = edid_width;
+ *target_height = edid_height;
+ print("vbe: EDID detected screen resolution of %ux%u\n",
+ *target_width, *target_height);
+ }
}
} else {
print("vbe: Requested resolution of %ux%ux%u\n",
