# HG changeset patch # User Eli Zaretskii # Date 1219608706 0 # Node ID af1ed009632703518f7b04d53d3d28ff31613744 # Parent 5f56382dc0260429b621e309f1cb4c8c7fe14350 (make_terminal_frame): Initialize f->terminal, f->terminal->reference_count, and scroll bars on MS-DOS as well. Set the top frame to newly created frame. (Fmake_terminal_frame): Reuse the_only_display_info. diff -r 5f56382dc026 -r af1ed0096327 src/frame.c --- a/src/frame.c Sun Aug 24 19:47:07 2008 +0000 +++ b/src/frame.c Sun Aug 24 20:11:46 2008 +0000 @@ -585,6 +585,8 @@ f->visible = 1; /* FRAME_SET_VISIBLE wd set frame_garbaged. */ f->async_visible = 1; /* Don't let visible be cleared later. */ + f->terminal = terminal; + f->terminal->reference_count++; #ifdef MSDOS f->output_data.tty->display_info = &the_only_display_info; if (!inhibit_window_system @@ -614,22 +616,10 @@ #else { f->output_method = output_termcap; - f->terminal = terminal; - f->terminal->reference_count++; create_tty_output (f); FRAME_FOREGROUND_PIXEL (f) = FACE_TTY_DEFAULT_FG_COLOR; FRAME_BACKGROUND_PIXEL (f) = FACE_TTY_DEFAULT_BG_COLOR; - - FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; - FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; - - /* Set the top frame to the newly created frame. */ - if (FRAMEP (FRAME_TTY (f)->top_frame) - && FRAME_LIVE_P (XFRAME (FRAME_TTY (f)->top_frame))) - XFRAME (FRAME_TTY (f)->top_frame)->async_visible = 2; /* obscured */ - - FRAME_TTY (f)->top_frame = frame; } #ifdef CANNOT_DUMP @@ -638,6 +628,16 @@ #endif #endif /* MSDOS */ + FRAME_CAN_HAVE_SCROLL_BARS (f) = 0; + FRAME_VERTICAL_SCROLL_BAR_TYPE (f) = vertical_scroll_bar_none; + + /* Set the top frame to the newly created frame. */ + if (FRAMEP (FRAME_TTY (f)->top_frame) + && FRAME_LIVE_P (XFRAME (FRAME_TTY (f)->top_frame))) + XFRAME (FRAME_TTY (f)->top_frame)->async_visible = 2; /* obscured */ + + FRAME_TTY (f)->top_frame = frame; + if (!noninteractive) init_frame_faces (f); @@ -717,14 +717,17 @@ terminal = XCDR (terminal); t = get_terminal (terminal, 1); } +#ifdef MSDOS + if (t && t != the_only_display_info.terminal) + /* msdos.c assumes a single tty_display_info object. */ + error ("Multiple terminals are not supported on this platform"); + if (!t) + t = the_only_display_info.terminal; +#endif } 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; @@ -751,7 +754,6 @@ } t = init_tty (name, type, 0); /* Errors are not fatal. */ -#endif /* !MSDOS */ } f = make_terminal_frame (t);