[1974] 2009-02-05 Vesa J?\195?\164?\195?\164skel?\195?\164inen <chaac@nic .fi>

Vesa J??skel?inen <[email protected]>
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 1974
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1974
Author:   chaac
Date:     2009-02-05 18:28:58 +0000 (Thu, 05 Feb 2009)

Log Message:
-----------
2009-02-05  Vesa J?\195?\164?\195?\164skel?\195?\164inen  <[email protected]>

	Fixes problem when running vbetest command as reported by 
	Vladimir Serbinenko <[email protected]>.

	* (grub_vbe_set_video_mode): Fixed problem with text modes.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/video/i386/pc/vbe.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-02-04 10:52:25 UTC (rev 1973)
+++ trunk/grub2/ChangeLog	2009-02-05 18:28:58 UTC (rev 1974)
@@ -1,3 +1,10 @@
+2009-02-05  Vesa Jääskeläinen  <[email protected]>
+
+	Fixes problem when running vbetest command as reported by 
+	Vladimir Serbinenko <[email protected]>.
+
+	* (grub_vbe_set_video_mode): Fixed problem with text modes.
+
 2009-02-04  Felix Zielcke  <[email protected]>
 
 	util/getroot.c (grub_util_get_grub_dev): Add support for /dev/mdNpN and

Modified: trunk/grub2/video/i386/pc/vbe.c
===================================================================
--- trunk/grub2/video/i386/pc/vbe.c	2009-02-04 10:52:25 UTC (rev 1973)
+++ trunk/grub2/video/i386/pc/vbe.c	2009-02-05 18:28:58 UTC (rev 1974)
@@ -206,36 +206,49 @@
         framebuffer.bytes_per_scan_line = active_mode_info.bytes_per_scan_line;
     }
 
-  /* Calculate bytes_per_pixel value.  */
-  switch(active_mode_info.bits_per_pixel)
+  /* Check whether mode is text mode or graphics mode.  */
+  if (active_mode_info.memory_model == GRUB_VBE_MEMORY_MODEL_TEXT)
     {
-    case 32: framebuffer.bytes_per_pixel = 4; break;
-    case 24: framebuffer.bytes_per_pixel = 3; break;
-    case 16: framebuffer.bytes_per_pixel = 2; break;
-    case 15: framebuffer.bytes_per_pixel = 2; break;
-    case 8: framebuffer.bytes_per_pixel = 1; break;
-    default:
-      grub_vbe_bios_set_mode (old_mode, 0);
-      return grub_error (GRUB_ERR_BAD_DEVICE,
-                         "cannot set VBE mode %x",
-                         mode);
-      break;
+      /* Text mode.  */
+
+      /* No special action needed for text mode as it is not supported for
+         graphical support.  */
     }
-
-  /* If video mode is in indexed color, setup default VGA palette.  */
-  if (framebuffer.index_color_mode)
+  else
     {
-      struct grub_vbe_palette_data *palette
-        = (struct grub_vbe_palette_data *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
+      /* Graphics mode.  */
 
-      /* Make sure that the BIOS can reach the palette.  */
-      grub_memcpy (palette, vga_colors, sizeof (vga_colors));
-      status = grub_vbe_bios_set_palette_data (sizeof (vga_colors)
-                                               / sizeof (struct grub_vbe_palette_data),
-                                               0,
-                                               palette);
+      /* Calculate bytes_per_pixel value.  */
+      switch(active_mode_info.bits_per_pixel)
+	{
+	case 32: framebuffer.bytes_per_pixel = 4; break;
+	case 24: framebuffer.bytes_per_pixel = 3; break;
+	case 16: framebuffer.bytes_per_pixel = 2; break;
+	case 15: framebuffer.bytes_per_pixel = 2; break;
+	case 8: framebuffer.bytes_per_pixel = 1; break;
+	default:
+	  grub_vbe_bios_set_mode (old_mode, 0);
+	  return grub_error (GRUB_ERR_BAD_DEVICE,
+			     "cannot set VBE mode %x",
+			     mode);
+	  break;
+	}
 
-      /* Just ignore the status.  */
+      /* If video mode is in indexed color, setup default VGA palette.  */
+      if (framebuffer.index_color_mode)
+	{
+	  struct grub_vbe_palette_data *palette
+	    = (struct grub_vbe_palette_data *) GRUB_MEMORY_MACHINE_SCRATCH_ADDR;
+
+	  /* Make sure that the BIOS can reach the palette.  */
+	  grub_memcpy (palette, vga_colors, sizeof (vga_colors));
+	  status = grub_vbe_bios_set_palette_data (sizeof (vga_colors)
+						   / sizeof (struct grub_vbe_palette_data),
+						   0,
+						   palette);
+
+	  /* Just ignore the status.  */
+	}
     }
 
   /* Copy mode info for caller.  */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.