diff src/frame.c @ 91732:c33ec1f680a9

* frame.c (Qnoelisp): New symbol. (syms_of_frame): Initialize it. (Fdelete_frame): Use it to distinguish a mere `force' passed from someharmles Elisp code, from a strong `force' from x_connection_closed. * frame.h (Qnoelisp): Declare. * xterm.c (x_connection_closed): Pass `noelisp'.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 10 Feb 2008 21:56:38 +0000
parents d17766001931
children a21ac0ad90f7
line wrap: on
line diff
--- a/src/frame.c	Sun Feb 10 20:57:47 2008 +0000
+++ b/src/frame.c	Sun Feb 10 21:56:38 2008 +0000
@@ -76,6 +76,7 @@
 Lisp_Object Qvisible;
 Lisp_Object Qdisplay_type;
 Lisp_Object Qbackground_mode;
+Lisp_Object Qnoelisp;
 
 Lisp_Object Qx_frame_parameter;
 Lisp_Object Qx_resource_name;
@@ -1406,10 +1407,10 @@
     }
 
   /* Run `delete-frame-functions'
-     unless FORCE is true or frame is a tooltip.
-     FORCE is set when handling a disconnect from the terminal,
+     unless FORCE is `noelisp' or frame is a tooltip.
+     FORCE is set to `noelisp' when handling a disconnect from the terminal,
      so we don't dare call Lisp code.  */
-  if (!NILP (Vrun_hooks) && NILP (force)
+  if (!NILP (Vrun_hooks) && EQ (force, Qnoelisp)
       && NILP (Fframe_parameter (frame, intern ("tooltip"))))
     {
       Lisp_Object args[2];
@@ -4395,6 +4396,8 @@
   staticpro (&Qdisplay_type);
   Qbackground_mode = intern ("background-mode");
   staticpro (&Qbackground_mode);
+  Qnoelisp = intern ("noelisp");
+  staticpro (&Qnoelisp);
   Qtty_color_mode = intern ("tty-color-mode");
   staticpro (&Qtty_color_mode);
   Qtty = intern ("tty");