]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Clear both buffers on gfxterm init
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 6 Jan 2010 09:51:23 +0000 (10:51 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 6 Jan 2010 09:51:23 +0000 (10:51 +0100)
term/gfxterm.c

index 0abe0f07d06d950fd869d6cc20beffcfdc3b87d5..26e94e474cdf0232df76ae3916c5762d4cbdb2c7 100644 (file)
@@ -315,6 +315,7 @@ grub_gfxterm_fullscreen (void)
   struct grub_video_mode_info mode_info;
   grub_video_color_t color;
   grub_err_t err;
+  int double_redraw;
 
   err = grub_video_get_info (&mode_info);
   /* Figure out what mode we ended up.  */
@@ -323,9 +324,17 @@ grub_gfxterm_fullscreen (void)
 
   grub_video_set_active_render_target (GRUB_VIDEO_RENDER_TARGET_DISPLAY);
 
+  double_redraw = mode_info.mode_type & GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED
+    && !(mode_info.mode_type & GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP);
+
   /* Make sure screen is black.  */
   color = grub_video_map_rgb (0, 0, 0);
   grub_video_fill_rect (color, 0, 0, mode_info.width, mode_info.height);
+  if (double_redraw)
+    {
+      grub_video_swap_buffers ();
+      grub_video_fill_rect (color, 0, 0, mode_info.width, mode_info.height);
+    }
   bitmap = 0;
 
   /* Select the font to use.  */
@@ -337,10 +346,7 @@ grub_gfxterm_fullscreen (void)
 
   return grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY,
                                  0, 0, mode_info.width, mode_info.height,
-                                 mode_info.mode_type
-                                 & GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED
-                                 && !(mode_info.mode_type 
-                                      & GRUB_VIDEO_MODE_TYPE_UPDATING_SWAP),
+                                 double_redraw,
                                  font_name, DEFAULT_BORDER_WIDTH);
 }