aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKaroly Lorentey2005-07-06 01:41:56 +0000
committerKaroly Lorentey2005-07-06 01:41:56 +0000
commite519a50bf7b0d7074f07ce492abb3cd544f79f59 (patch)
tree7efd8903ced9bdd6829caf0c3ef45d0ce46d5af5 /lisp
parent626ea340bcdbe7ea4ea17b67ead430f2037ac69c (diff)
downloademacs-e519a50bf7b0d7074f07ce492abb3cd544f79f59.tar.gz
emacs-e519a50bf7b0d7074f07ce492abb3cd544f79f59.zip
Handle and document that `delete-frame' may call functions in `delete-frame-functions' twice.
* src/frame.c (syms_of_frame): Add warning to `delete-frame-functions' description. * lisp/frame.el (terminal-handle-delete-frame): Check that the frame is alive. * lisp/server.el (server-handle-delete-frame): Ditto. Remove bogus comment. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-375
Diffstat (limited to 'lisp')
-rw-r--r--lisp/frame.el3
-rw-r--r--lisp/server.el7
2 files changed, 4 insertions, 6 deletions
diff --git a/lisp/frame.el b/lisp/frame.el
index 5bb58c5344b..b034f9a9162 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -1484,7 +1484,8 @@ selected frame's terminal)."
1484 ;; XXX We assume that the display is closed immediately after the 1484 ;; XXX We assume that the display is closed immediately after the
1485 ;; last frame is deleted on it. It would be better to create a hook 1485 ;; last frame is deleted on it. It would be better to create a hook
1486 ;; called `delete-display-functions', and use it instead. 1486 ;; called `delete-display-functions', and use it instead.
1487 (when (= 1 (length (frames-on-display-list (frame-display frame)))) 1487 (when (and (frame-live-p frame)
1488 (= 1 (length (frames-on-display-list (frame-display frame)))))
1488 (setq terminal-parameter-alist 1489 (setq terminal-parameter-alist
1489 (assq-delete-all (frame-display frame) terminal-parameter-alist)))) 1490 (assq-delete-all (frame-display frame) terminal-parameter-alist))))
1490 1491
diff --git a/lisp/server.el b/lisp/server.el
index 91a74d6408d..dab3cde8268 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -314,7 +314,8 @@ message."
314(defun server-handle-delete-frame (frame) 314(defun server-handle-delete-frame (frame)
315 "Delete the client connection when the emacsclient frame is deleted." 315 "Delete the client connection when the emacsclient frame is deleted."
316 (let ((proc (frame-parameter frame 'client))) 316 (let ((proc (frame-parameter frame 'client)))
317 (when (and proc 317 (when (and (frame-live-p frame)
318 proc
318 (or (window-system frame) 319 (or (window-system frame)
319 ;; A terminal display must not yet be deleted if 320 ;; A terminal display must not yet be deleted if
320 ;; there are other frames on it. 321 ;; there are other frames on it.
@@ -326,10 +327,6 @@ message."
326 (frame-list)) 327 (frame-list))
327 frame-num)))) 328 frame-num))))
328 (server-log (format "server-handle-delete-frame, frame %s" frame) proc) 329 (server-log (format "server-handle-delete-frame, frame %s" frame) proc)
329 ;; XXX Deleting the process causes emacsclient to exit
330 ;; immediately, which might happen before Emacs closes the
331 ;; display. I think we need a `delete-frame-after-functions'
332 ;; hook here.
333 (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later. 330 (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later.
334 331
335(defun server-handle-suspend-tty (display) 332(defun server-handle-suspend-tty (display)