]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* gfxmenu/gfxmenu.c (grub_gfxmenu_try): Change viewport on both buffers.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 23 May 2010 11:42:16 +0000 (13:42 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 23 May 2010 11:42:16 +0000 (13:42 +0200)
* term/gfxterm.c (real_scroll): Likewise.

ChangeLog
gfxmenu/gfxmenu.c
term/gfxterm.c

index 02d16e83538705dca6babcc2e2e0998e22b72bb7..cdeee7c2b94ca9061b1e5d84d7415b61bf570d02 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-23  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * gfxmenu/gfxmenu.c (grub_gfxmenu_try): Change viewport on both buffers.
+       * term/gfxterm.c (real_scroll): Likewise.
+
 2010-05-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * kern/i386/pc/mmap.c (grub_machine_mmap_iterate): Zero-fill entry
index a2e7651563ca32a2f9c2ccfa31b2f978f317a32e..1acab9ca7fe441007d583960a9f4183f5b7c11c7 100644 (file)
@@ -110,6 +110,13 @@ grub_gfxmenu_try (int entry, grub_menu_t menu, int nested)
   view->nested = nested;
   view->first_timeout = -1;
 
+  grub_video_set_viewport (0, 0, mode_info.width, mode_info.height);
+  if (view->double_repaint)
+    {
+      grub_video_swap_buffers ();
+      grub_video_set_viewport (0, 0, mode_info.width, mode_info.height);
+    }
+
   grub_gfxmenu_view_draw (view);
 
   instance->data = view;
index ecfe4ff3b57ac2895d171268edafb13638f6c6e6..c57d0f0fa9c984e9bc843b6a8047983a9cf92cb0 100644 (file)
@@ -707,12 +707,6 @@ real_scroll (void)
       draw_cursor (0);
 
       grub_video_set_active_render_target (render_target);
-      /* Save viewport and set it to our window.  */
-      grub_video_get_viewport ((unsigned *) &saved_view.x, 
-                               (unsigned *) &saved_view.y, 
-                               (unsigned *) &saved_view.width, 
-                               (unsigned *) &saved_view.height);
-      grub_video_set_viewport (window.x, window.y, window.width, window.height);
 
       i = window.double_repaint ? 2 : 1;
 
@@ -720,6 +714,15 @@ real_scroll (void)
 
       while (i--)
        {
+         /* Save viewport and set it to our window.  */
+         grub_video_get_viewport ((unsigned *) &saved_view.x, 
+                                  (unsigned *) &saved_view.y, 
+                                  (unsigned *) &saved_view.width, 
+                                  (unsigned *) &saved_view.height);
+
+         grub_video_set_viewport (window.x, window.y, window.width,
+                                  window.height);
+
          /* Clear new border area.  */
          grub_video_fill_rect (color,
                                virtual_screen.offset_x,
@@ -735,6 +738,10 @@ real_scroll (void)
          grub_video_scroll (color, 0, -virtual_screen.normal_char_height
                             * virtual_screen.total_scroll);
 
+         /* Restore saved viewport.  */
+         grub_video_set_viewport (saved_view.x, saved_view.y,
+                                  saved_view.width, saved_view.height);
+
          if (i)
            grub_video_swap_buffers ();
        }
@@ -746,9 +753,6 @@ real_scroll (void)
       grub_video_scroll (color, 0, -virtual_screen.normal_char_height
                         * virtual_screen.total_scroll);
 
-      /* Restore saved viewport.  */
-      grub_video_set_viewport (saved_view.x, saved_view.y,
-                               saved_view.width, saved_view.height);
       grub_video_set_active_render_target (render_target);
 
     }