]> git.eshelyaron.com Git - emacs.git/commitdiff
(clear_frame): Use FillConsoleOutput* calls instead of
authorGeoff Voelker <voelker@cs.washington.edu>
Sun, 21 Jan 1996 00:28:26 +0000 (00:28 +0000)
committerGeoff Voelker <voelker@cs.washington.edu>
Sun, 21 Jan 1996 00:28:26 +0000 (00:28 +0000)
ScrollConsoleScreenBuffer (which has a bug on Win95).

src/w32console.c

index 102693d44e160581b1d350b5fc54bd4f2ba316f8..31ec93635692fdf0a0cecbcb78fb12391a6fb671 100644 (file)
@@ -123,25 +123,18 @@ clear_to_end (void)
 void
 clear_frame (void)
 {
-  SMALL_RECT scroll;
-  COORD             dest;
-  CHAR_INFO  fill;
   FRAME_PTR  f = PICK_FRAME ();
-  
+  COORD             dest;
+  int        n, r;
+
   hl_mode (0);
   
-  scroll.Top = 0;
-  scroll.Bottom = FRAME_HEIGHT (f) - 1;
-  scroll.Left = 0;
-  scroll.Right = FRAME_WIDTH (f) - 1;
-  
-  dest.Y = FRAME_HEIGHT (f);
-  dest.X = 0;
-  
-  fill.Char.AsciiChar = 0x20;
-  fill.Attributes = char_attr;
-  
-  ScrollConsoleScreenBuffer (cur_screen, &scroll, NULL, dest, &fill);
+  n = FRAME_HEIGHT (f) * FRAME_WIDTH (f);
+  dest.X = dest.Y = 0;
+
+  FillConsoleOutputAttribute (cur_screen, char_attr, n, dest, &r);
+  FillConsoleOutputCharacter (cur_screen, ' ', n, dest, &r);
+
   move_cursor (0, 0);
 }
 
@@ -347,6 +340,9 @@ write_glyphs (register GLYPH *string, register int len)
   char *chars;
   int i;
   
+  if (len <= 0)
+    return;
+
   attrs = alloca (len * sizeof (*attrs));
   chars = alloca (len * sizeof (*chars));
   if (attrs == NULL || chars == NULL)