diff lisp/server.el @ 83335:60208d3a0bb1

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
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 06 Jul 2005 01:41:56 +0000
parents 6afa124501e6
children ccccb663aed3
line wrap: on
line diff
--- a/lisp/server.el	Wed Jul 06 00:42:58 2005 +0000
+++ b/lisp/server.el	Wed Jul 06 01:41:56 2005 +0000
@@ -314,7 +314,8 @@
 (defun server-handle-delete-frame (frame)
   "Delete the client connection when the emacsclient frame is deleted."
   (let ((proc (frame-parameter frame 'client)))
-    (when (and proc
+    (when (and (frame-live-p frame)
+	       proc
 	       (or (window-system frame)
 		   ;; A terminal display must not yet be deleted if
 		   ;; there are other frames on it.
@@ -326,10 +327,6 @@
 				(frame-list))
 			  frame-num))))
       (server-log (format "server-handle-delete-frame, frame %s" frame) proc)
-      ;; XXX Deleting the process causes emacsclient to exit
-      ;; immediately, which might happen before Emacs closes the
-      ;; display.  I think we need a `delete-frame-after-functions'
-      ;; hook here.
       (server-delete-client proc 'noframe)))) ; Let delete-frame delete the frame later.
 
 (defun server-handle-suspend-tty (display)