[Top][All Lists]
[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. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2029] 2009-03-12 Colin D Bennett <address@hidden>,
Colin Bennett <=