[1966] 2009-02-01 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: 1966
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=1966
Author:   chaac
Date:     2009-02-01 09:33:29 +0000 (Sun, 01 Feb 2009)

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

	Base on patch on bug #24154 created by Tomas Tintera
	<[email protected]>.

	* video/i386/pc/vbe.c (grub_video_vbe_scroll): Fix downward scrolling.

Ticket Links:
:-----------
    http://savannah.gnu.org/bugs/?24154

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

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-02-01 09:03:15 UTC (rev 1965)
+++ trunk/grub2/ChangeLog	2009-02-01 09:33:29 UTC (rev 1966)
@@ -1,5 +1,12 @@
 2009-02-01  Vesa Jääskeläinen  <[email protected]>
 
+	Base on patch on bug #24154 created by Tomas Tintera
+	<[email protected]>.
+
+	* video/i386/pc/vbe.c (grub_video_vbe_scroll): Fix downward scrolling.
+
+2009-02-01  Vesa Jääskeläinen  <[email protected]>
+
 	Based on patch on bug #25318 created by Bernhard Rosenkraenzer 
 	<[email protected]>.
 

Modified: trunk/grub2/video/i386/pc/vbe.c
===================================================================
--- trunk/grub2/video/i386/pc/vbe.c	2009-02-01 09:03:15 UTC (rev 1965)
+++ trunk/grub2/video/i386/pc/vbe.c	2009-02-01 09:33:29 UTC (rev 1966)
@@ -709,7 +709,7 @@
 
       return minindex;
     }
-  else if ((render_target->mode_info.mode_type 
+  else if ((render_target->mode_info.mode_type
             & GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP) != 0)
     {
        if (red == render_target->mode_info.fg_red
@@ -749,7 +749,7 @@
     /* No alpha available in index color modes, just use
        same value as in only RGB modes.  */
     return grub_video_vbe_map_rgb (red, green, blue);
-  else if ((render_target->mode_info.mode_type 
+  else if ((render_target->mode_info.mode_type
             & GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP) != 0)
     {
       if (red == render_target->mode_info.fg_red
@@ -1399,13 +1399,25 @@
       target.mode_info = &render_target->mode_info;
       target.data = render_target->data;
 
-      for (j = 0; j < height; j++)
-        {
-          dst = grub_video_vbe_get_video_ptr (&target, dst_x, dst_y + j);
-          src = grub_video_vbe_get_video_ptr (&target, src_x, src_y + j);
-          grub_memmove (dst, src,
-                        width * target.mode_info->bytes_per_pixel);
-        }
+      /* Check vertical direction of the move.  */
+      if (dy <= 0)
+	/* 3a. Move data upwards.  */
+	for (j = 0; j < height; j++)
+	  {
+	    dst = grub_video_vbe_get_video_ptr (&target, dst_x, dst_y + j);
+	    src = grub_video_vbe_get_video_ptr (&target, src_x, src_y + j);
+	    grub_memmove (dst, src,
+			  width * target.mode_info->bytes_per_pixel);
+	  }
+      else
+	/* 3b. Move data downwards.  */
+	for (j = (height - 1); j >= 0; j--)
+	  {
+	    dst = grub_video_vbe_get_video_ptr (&target, dst_x, dst_y + j);
+	    src = grub_video_vbe_get_video_ptr (&target, src_x, src_y + j);
+	    grub_memmove (dst, src,
+			  width * target.mode_info->bytes_per_pixel);
+	  }
     }
 
   /* 4. Fill empty space with specified color.  In this implementation
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.