# HG changeset patch # User Eli Zaretskii # Date 1219510619 0 # Node ID 6358f03eb00324957dbbecf578c3aaa1c9e02ba3 # Parent 53d01aafa957d9ed9cb610b5e61f644d03ce8dc3 (make_terminal_frame) [MSDOS]: Adjust initialization of f->output_data.tty. (Fmake_terminal_frame) [MSDOS]: Don't allow creation of new terminal devices. diff -r 53d01aafa957 -r 6358f03eb003 src/frame.c --- a/src/frame.c Sat Aug 23 16:55:52 2008 +0000 +++ b/src/frame.c Sat Aug 23 16:56:59 2008 +0000 @@ -586,19 +586,20 @@ f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */ f->async_visible = 1; /* Don't let visible be cleared later. */ #ifdef MSDOS - f->output_data.x = &the_only_x_display; + f->output_data.tty->display_info = &the_only_display_info; if (!inhibit_window_system && (!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame)) || XFRAME (selected_frame)->output_method == output_msdos_raw)) { f->output_method = output_msdos_raw; +#if 0 /* This initialization of foreground and background pixels is only important for the initial frame created in temacs. If we don't do that, we get black background and foreground in - the dumped Emacs because the_only_x_display is a static + the dumped Emacs because the_only_display_info is a static variable, hence it is born all-zeroes, and zero is the code for the black color. Other frames all inherit their pixels - from what's already in the_only_x_display. */ + from what's already in the_only_display_info. */ if ((!FRAMEP (selected_frame) || !FRAME_LIVE_P (XFRAME (selected_frame))) && FRAME_BACKGROUND_PIXEL (f) == 0 && FRAME_FOREGROUND_PIXEL (f) == 0) @@ -606,6 +607,7 @@ FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR; FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR; } +#endif } else f->output_method = output_termcap; @@ -719,6 +721,10 @@ if (!t) { +#ifdef MSDOS + /* msdos.c assumes a single tty_display_info object. */ + error ("Multiple terminals are not supported on this platform"); +#else /* !MSDOS */ char *name = 0, *type = 0; Lisp_Object tty, tty_type; @@ -745,6 +751,7 @@ } t = init_tty (name, type, 0); /* Errors are not fatal. */ +#endif /* !MSDOS */ } f = make_terminal_frame (t);