+2001-11-23 Eli Zaretskii <eliz@is.elta.co.il>
+
+ * msdos.c (IT_clear_screen): If the frame's faces are not yet
+ realized, use the initial screen colors to clear the screen.
+
2001-11-19 Richard M. Stallman <rms@gnu.org>
* sysdep.c (child_setup_tty): Don't clear ICRNL or INLCR.
Lisp_Object Qbar;
+static int initial_screen_colors[2];
+
#if __DJGPP__ > 1
/* Update the screen from a part of relocated DOS/V screen buffer which
begins at OFFSET and includes COUNT characters. */
{
if (termscript)
fprintf (termscript, "<CLR:SCR>");
- IT_set_face (0);
+ /* We are sometimes called (from clear_garbaged_frames) when a new
+ frame is being created, but its faces are not yet realized. In
+ such a case we cannot call IT_set_face, since it will fail to find
+ any valid faces and will abort. Instead, use the initial screen
+ colors; that should mimic what a Unix tty does, which simply clears
+ the screen with whatever default colors are in use. */
+ if (FACE_FROM_ID (SELECTED_FRAME (), DEFAULT_FACE_ID) == NULL)
+ ScreenAttrib = (initial_screen_colors[0] << 4) | initial_screen_colors[1];
+ else
+ IT_set_face (0);
mouse_off ();
ScreenClear ();
if (screen_virtual_segment)
/* Remember the screen colors of the curent frame, to serve as the
default colors for newly-created frames. */
-
-static int initial_screen_colors[2];
-
DEFUN ("msdos-remember-default-colors", Fmsdos_remember_default_colors,
Smsdos_remember_default_colors, 1, 1, 0,
"Remember the screen colors of the current frame.")