HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
$TERM is now set to dumb.
[bpt/emacs.git]
/
src
/
terminal.c
diff --git
a/src/terminal.c
b/src/terminal.c
index
fa6a0a4
..
c7d3da5
100644
(file)
--- a/
src/terminal.c
+++ b/
src/terminal.c
@@
-1,11
+1,11
@@
/* Functions related to terminal devices.
/* Functions related to terminal devices.
- Copyright (C) 2005 Free Software Foundation, Inc.
+ Copyright (C) 2005
, 2006, 2007
Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version
2
, or (at your option)
+the Free Software Foundation; either version
3
, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
any later version.
GNU Emacs is distributed in the hope that it will be useful,
@@
-270,16
+270,22
@@
mark_terminals (void)
}
}
-/* 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)
{
struct terminal **tp;
Lisp_Object tail, frame;
void
delete_terminal (struct terminal *terminal)
{
struct terminal **tp;
Lisp_Object tail, frame;
-
- /* Check for and close live frames that are still on this
- terminal. */
+
+ /* 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 live frames that are still on this terminal. */
FOR_EACH_FRAME (tail, frame)
{
struct frame *f = XFRAME (frame);
FOR_EACH_FRAME (tail, frame)
{
struct frame *f = XFRAME (frame);
@@
-575,8
+581,9
@@
init_initial_terminal (void)
initial_terminal = create_terminal ();
initial_terminal->type = output_initial;
initial_terminal->name = xstrdup ("initial_terminal");
initial_terminal = create_terminal ();
initial_terminal->type = output_initial;
initial_terminal->name = xstrdup ("initial_terminal");
+#ifdef MULTI_KBOARD
initial_terminal->kboard = initial_kboard;
initial_terminal->kboard = initial_kboard;
-
+#endif
initial_terminal->delete_terminal_hook = &delete_initial_terminal;
/* All other hooks are NULL. */
initial_terminal->delete_terminal_hook = &delete_initial_terminal;
/* All other hooks are NULL. */