grub2/grub2-efi_gop-avoid-low-resolution.patch
Michael Chang 1cbe67557f Accepting request 242829 from home:tiwai:branches:Base:System
- Prefer a higher resolution in efi_gop driver if the mode taking
  over is too small like 640x480 (bnc#887972):
  grub2-efi_gop-avoid-low-resolution.patch

OBS-URL: https://build.opensuse.org/request/show/242829
OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=99
2014-07-29 10:28:18 +00:00

40 lines
1.2 KiB
Diff

---
grub-core/video/efi_gop.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
--- a/grub-core/video/efi_gop.c
+++ b/grub-core/video/efi_gop.c
@@ -358,6 +358,7 @@ grub_video_gop_setup (unsigned int width
grub_err_t err;
unsigned bpp;
int found = 0;
+ int avoid_low_resolution = 1;
unsigned long long best_volume = 0;
unsigned int preferred_width = 0, preferred_height = 0;
grub_uint8_t *buffer;
@@ -376,8 +377,11 @@ grub_video_gop_setup (unsigned int width
}
}
+again:
/* Keep current mode if possible. */
- if (gop->mode->info)
+ if (gop->mode->info &&
+ (!avoid_low_resolution ||
+ (gop->mode->info->width >= 800 && gop->mode->info->height >= 600)))
{
bpp = grub_video_gop_get_bpp (gop->mode->info);
if (bpp && ((width == gop->mode->info->width
@@ -450,6 +454,11 @@ grub_video_gop_setup (unsigned int width
if (!found)
{
+ if (avoid_low_resolution && gop->mode->info)
+ {
+ avoid_low_resolution = 0;
+ goto again;
+ }
grub_dprintf ("video", "GOP: no mode found\n");
return grub_error (GRUB_ERR_UNKNOWN_DEVICE, "no matching mode found");
}