commit-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[2029] 2009-03-12 Colin D Bennett <address@hidden>


From: Colin Bennett
Subject: [2029] 2009-03-12 Colin D Bennett <address@hidden>
Date: Thu, 12 Mar 2009 18:30:45 +0000

Revision: 2029
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2029
Author:   cbennett
Date:     2009-03-12 18:30:44 +0000 (Thu, 12 Mar 2009)
Log Message:
-----------
2009-03-12  Colin D Bennett  <address@hidden>

        * term/gfxterm.c (draw_cursor): Ensure character is redrawn.
        (grub_gfxterm_putchar): Extract pairs of identical calls to
        draw_cursor out of conditional blocks.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/term/gfxterm.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog       2009-03-11 21:51:16 UTC (rev 2028)
+++ trunk/grub2/ChangeLog       2009-03-12 18:30:44 UTC (rev 2029)
@@ -1,3 +1,9 @@
+2009-03-12  Colin D Bennett  <address@hidden>
+
+       * term/gfxterm.c (draw_cursor): Ensure character is redrawn.
+       (grub_gfxterm_putchar): Extract pairs of identical calls to
+       draw_cursor out of conditional blocks.
+
 2009-03-11  Pavel Roskin  <address@hidden>
 
        * fs/hfs.c (grub_hfs_strncasecmp): New function.

Modified: trunk/grub2/term/gfxterm.c
===================================================================
--- trunk/grub2/term/gfxterm.c  2009-03-11 21:51:16 UTC (rev 2028)
+++ trunk/grub2/term/gfxterm.c  2009-03-12 18:30:44 UTC (rev 2029)
@@ -717,38 +717,34 @@
 static void
 draw_cursor (int show)
 {
-  unsigned int x;
-  unsigned int y;
-  unsigned int width;
-  unsigned int height;
-  grub_video_color_t color;
+  write_char ();
 
-  /* Determine cursor properties and position on text layer. */
-  x = virtual_screen.cursor_x * virtual_screen.normal_char_width;
-  y = (virtual_screen.cursor_y * virtual_screen.normal_char_height
-       + grub_font_get_ascent (virtual_screen.font));
-  width = virtual_screen.normal_char_width;
-  height = 2;
-
   if (show)
     {
+      unsigned int x;
+      unsigned int y;
+      unsigned int width;
+      unsigned int height;
+      grub_video_color_t color;
+
+      /* Determine cursor properties and position on text layer. */
+      x = virtual_screen.cursor_x * virtual_screen.normal_char_width;
+      width = virtual_screen.normal_char_width;
       color = virtual_screen.fg_color;
-    }
-  else
-    {
-      color = virtual_screen.bg_color;
-      y = virtual_screen.cursor_y * virtual_screen.normal_char_height;
-      height = virtual_screen.normal_char_height;
-    }
+      y = (virtual_screen.cursor_y * virtual_screen.normal_char_height
+           + grub_font_get_ascent (virtual_screen.font));
+      height = 2;
 
-  /* Render cursor to text layer.  */
-  grub_video_set_active_render_target (text_layer);
-  grub_video_fill_rect (color, x, y, width, height);
-  grub_video_set_active_render_target (GRUB_VIDEO_RENDER_TARGET_DISPLAY);
+      /* Render cursor to text layer.  */
+      grub_video_set_active_render_target (text_layer);
+      grub_video_fill_rect (color, x, y, width, height);
+      grub_video_set_active_render_target (GRUB_VIDEO_RENDER_TARGET_DISPLAY);
 
-  /* Mark cursor to be redrawn.  */
-  dirty_region_add (virtual_screen.offset_x + x, virtual_screen.offset_y + y,
-                    width, height);
+      /* Mark cursor to be redrawn.  */
+      dirty_region_add (virtual_screen.offset_x + x,
+                        virtual_screen.offset_y + y,
+                        width, height);
+    }
 }
 
 static void
@@ -821,12 +817,12 @@
     /* FIXME */
     return;
 
+  /* Erase current cursor, if any.  */
+  if (virtual_screen.cursor_state)
+    draw_cursor (0);
+
   if (c == '\b' || c == '\n' || c == '\r')
     {
-      /* Erase current cursor, if any.  */
-      if (virtual_screen.cursor_state)
-       draw_cursor (0);
-
       switch (c)
         {
         case '\b':
@@ -845,10 +841,6 @@
           virtual_screen.cursor_x = 0;
           break;
         }
-
-      /* Redraw cursor if visible.  */
-      if (virtual_screen.cursor_state)
-       draw_cursor (1);
     }
   else
     {
@@ -856,10 +848,6 @@
       struct grub_colored_char *p;
       unsigned char char_width;
 
-      /* Erase current cursor, if any.  */
-      if (virtual_screen.cursor_state)
-       draw_cursor (0);
-
       /* Get properties of the character.  */
       glyph = grub_font_get_glyph (virtual_screen.font, c);
 
@@ -908,11 +896,13 @@
           else
             virtual_screen.cursor_y++;
         }
-
-      /* Draw cursor if visible.  */
-      if (virtual_screen.cursor_state)
-       draw_cursor (1);
     }
+
+  /* Redraw cursor if it should be visible.  */
+  /* Note: This will redraw the character as well, which means that the
+     above call to write_char is redundant when the cursor is showing.  */
+  if (virtual_screen.cursor_state)
+    draw_cursor (1);
 }
 
 /* Use ASCII characters to determine normal character width.  */





reply via email to

[Prev in Thread] Current Thread [Next in Thread]