Mercurial > emacs
diff src/terminal.c @ 83525:b2e7507b55c6
Fix C-x 5 2 on the controlling tty; fix some possible crash conditions and a memory leak.
* src/frame.c (make_terminal_frame): Don't create frames on a terminal
that is being deleted.
* src/xfns.c (Fx_create_frame, x_create_tip_frame): Ditto.
* src/keyboard.c (tty_read_avail_input): Don't read from a terminal that
is being deleted.
* src/term.c (get_named_tty): Abort if tty name is NULL. Simplify accordingly.
* src/term.c (Ftty_type): Return nil if terminal is not on a tty instead
of throwing an error. Doc update.
* src/term.c (init_tty): Set name before calling `get_named_tty'.
* src/term.c (delete_tty): Let delete_terminal delete the frames. Plug
memory leak caused by tty->name. Remove reference to `deleting_tty'.
* src/term.c (syms_of_term) <Vsuspend_tty_functions, Vresume_tty_functions>: Doc update.
* src/termhooks.h (terminal) <name>: Explain why identifying terminals by
name is a bad idea.
* src/terminal.c (delete_terminal): Doc update.
* src/xterm.c (XTread_socket): Disable loop on all X displays.
* src/xterm.c (x_delete_display): Doc update to reflect changes in
delete_terminal.
* src/xterm.c (x_delete_terminal): Don't set terminal->deleted and let
delete_terminal delete the frames on the terminal.
* src/xterm.h (x_display_info) <terminal>: Move member earlier in the struct.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-565
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 20 May 2006 17:12:43 +0000 |
parents | a5d712e6585a |
children | c933949cdadb |
line wrap: on
line diff
--- a/src/terminal.c Sat May 20 17:02:47 2006 +0000 +++ b/src/terminal.c Sat May 20 17:12:43 2006 +0000 @@ -270,7 +270,8 @@ } -/* Remove a terminal from the terminal list and free its memory. */ +/* Low-level function to close all frames on a terminal, remove it + from the terminal list and free its memory. */ void delete_terminal (struct terminal *terminal) @@ -278,14 +279,13 @@ struct terminal **tp; Lisp_Object tail, frame; - /* Protect against recursive calls. Fdelete_frame calls us back - when we delete our last frame. */ + /* Protect against recursive calls. Fdelete_frame calls the + delete_terminal_hook when we delete our last frame. */ if (terminal->deleted) return; terminal->deleted = 1; - /* Check for and close live frames that are still on this - terminal. */ + /* Check for live frames that are still on this terminal. */ FOR_EACH_FRAME (tail, frame) { struct frame *f = XFRAME (frame);