Mercurial > emacs
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);