changeset 24755:3bb855a40bf6

(clear_frame): Remember that the window width might be smaller than the screen buffer width. (write_glyphs): Remove redundant variable attrs. Use FillConsoleOutputAttribute instead of WriteConsoleOutputAttribute.
author Andrew Innes <andrewi@gnu.org>
date Sat, 22 May 1999 17:37:18 +0000
parents b900ed44aab2
children 4582b492a651
files src/w32console.c
diffstat 1 files changed, 8 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32console.c	Sat May 22 12:37:18 1999 +0000
+++ b/src/w32console.c	Sat May 22 17:37:18 1999 +0000
@@ -123,10 +123,14 @@
   FRAME_PTR  f = PICK_FRAME ();
   COORD	     dest;
   int        n, r;
+  CONSOLE_SCREEN_BUFFER_INFO info;
+
+  GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &info);
 
   hl_mode (0);
   
-  n = FRAME_HEIGHT (f) * FRAME_WIDTH (f);
+  /* Remember that the screen buffer might be wider than the window.  */
+  n = FRAME_HEIGHT (f) * info.dwSize.X;
   dest.X = dest.Y = 0;
 
   FillConsoleOutputAttribute (cur_screen, char_attr, n, dest, &r);
@@ -333,16 +337,14 @@
   FRAME_PTR f = PICK_FRAME ();
   register char *ptr;
   GLYPH glyph;
-  WORD *attrs;
   char *chars;
   int i;
   
   if (len <= 0)
     return;
 
-  attrs = alloca (len * sizeof (*attrs));
   chars = alloca (len * sizeof (*chars));
-  if (attrs == NULL || chars == NULL)
+  if (chars == NULL)
     {
       printf ("alloca failed in write_glyphs\n");
       return;
@@ -379,12 +381,8 @@
   /* Number of characters we have in the buffer.  */
   len = ptr-chars;
   
-  /* Fill in the attributes for these characters.  */
-  for (i = 0; i < len; i++)
-    attrs[i] = char_attr;
-  
-  /* Write the attributes.  */
-  if (!WriteConsoleOutputAttribute (cur_screen, attrs, len, cursor_coords, &i))
+  /* Set the attribute for these characters.  */
+  if (!FillConsoleOutputAttribute (cur_screen, char_attr, len, cursor_coords, &i))
     {
       printf ("Failed writing console attributes: %d\n", GetLastError ());
       fflush (stdout);