diff options
Diffstat (limited to 'src/frame.c')
| -rw-r--r-- | src/frame.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/frame.c b/src/frame.c index 158aa1058fc..72d28c72b79 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -478,14 +478,21 @@ make_minibuffer_frame () | |||
| 478 | static int terminal_frame_count; | 478 | static int terminal_frame_count; |
| 479 | 479 | ||
| 480 | struct frame * | 480 | struct frame * |
| 481 | make_terminal_frame (tty, tty_type) | 481 | make_terminal_frame (tty_name, tty_type) |
| 482 | char *tty; | 482 | char *tty_name; |
| 483 | char *tty_type; | 483 | char *tty_type; |
| 484 | { | 484 | { |
| 485 | register struct frame *f; | 485 | register struct frame *f; |
| 486 | Lisp_Object frame; | 486 | Lisp_Object frame; |
| 487 | char name[20]; | 487 | char name[20]; |
| 488 | struct tty_output *tty; | ||
| 488 | 489 | ||
| 490 | /* init_term may throw an error, so create the tty first. */ | ||
| 491 | if (initialized) | ||
| 492 | tty = term_init (tty_name, tty_type); | ||
| 493 | else | ||
| 494 | tty = term_dummy_init (); | ||
| 495 | |||
| 489 | #ifdef MULTI_KBOARD | 496 | #ifdef MULTI_KBOARD |
| 490 | if (!initial_kboard) | 497 | if (!initial_kboard) |
| 491 | { | 498 | { |
| @@ -544,10 +551,7 @@ make_terminal_frame (tty, tty_type) | |||
| 544 | make_mac_terminal_frame (f); | 551 | make_mac_terminal_frame (f); |
| 545 | #else | 552 | #else |
| 546 | f->output_method = output_termcap; | 553 | f->output_method = output_termcap; |
| 547 | if (initialized) | 554 | f->output_data.tty = tty; |
| 548 | f->output_data.tty = term_init (tty, tty_type); | ||
| 549 | else | ||
| 550 | f->output_data.tty = term_dummy_init (); | ||
| 551 | f->output_data.tty->top_frame = frame; | 555 | f->output_data.tty->top_frame = frame; |
| 552 | #ifdef CANNOT_DUMP | 556 | #ifdef CANNOT_DUMP |
| 553 | FRAME_FOREGROUND_PIXEL(f) = FACE_TTY_DEFAULT_FG_COLOR; | 557 | FRAME_FOREGROUND_PIXEL(f) = FACE_TTY_DEFAULT_FG_COLOR; |
| @@ -608,6 +612,8 @@ Note that changing the size of one terminal frame automatically affects all. */ | |||
| 608 | /* XXX Ugh, there must be a better way to do this. */ | 612 | /* XXX Ugh, there must be a better way to do this. */ |
| 609 | tty = Fassq (Qtty, parms); | 613 | tty = Fassq (Qtty, parms); |
| 610 | if (EQ (tty, Qnil)) | 614 | if (EQ (tty, Qnil)) |
| 615 | tty = Fassq (Qtty, XFRAME (selected_frame)->param_alist); | ||
| 616 | if (EQ (tty, Qnil)) | ||
| 611 | tty = Fassq (Qtty, Vdefault_frame_alist); | 617 | tty = Fassq (Qtty, Vdefault_frame_alist); |
| 612 | if (! EQ (tty, Qnil)) | 618 | if (! EQ (tty, Qnil)) |
| 613 | tty = XCDR (tty); | 619 | tty = XCDR (tty); |
| @@ -617,6 +623,8 @@ Note that changing the size of one terminal frame automatically affects all. */ | |||
| 617 | tty_type = Fassq (Qtty_type, parms); | 623 | tty_type = Fassq (Qtty_type, parms); |
| 618 | if (EQ (tty_type, Qnil)) | 624 | if (EQ (tty_type, Qnil)) |
| 619 | tty_type = Fassq (Qtty_type, Vdefault_frame_alist); | 625 | tty_type = Fassq (Qtty_type, Vdefault_frame_alist); |
| 626 | if (EQ (tty_type, Qnil)) | ||
| 627 | tty_type = Fassq (Qtty, XFRAME (selected_frame)->param_alist); | ||
| 620 | if (! EQ (tty_type, Qnil)) | 628 | if (! EQ (tty_type, Qnil)) |
| 621 | tty_type = XCDR (tty_type); | 629 | tty_type = XCDR (tty_type); |
| 622 | if (EQ (tty_type, Qnil) || !STRINGP (tty_type)) | 630 | if (EQ (tty_type, Qnil) || !STRINGP (tty_type)) |
| @@ -1300,7 +1308,7 @@ The functions are run with one arg, the frame to be deleted. */) | |||
| 1300 | { | 1308 | { |
| 1301 | FOR_EACH_FRAME (tail, frame1) | 1309 | FOR_EACH_FRAME (tail, frame1) |
| 1302 | { | 1310 | { |
| 1303 | if (! EQ (frame, frame1)) | 1311 | if (! EQ (frame, frame1) && FRAME_LIVE_P (XFRAME (frame1))) |
| 1304 | break; | 1312 | break; |
| 1305 | } | 1313 | } |
| 1306 | } | 1314 | } |