aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJim Blandy1993-01-22 02:45:16 +0000
committerJim Blandy1993-01-22 02:45:16 +0000
commit8678b9ccf53e6e6e05af74b748e25e4dc55b84f2 (patch)
tree67c41071d3ef5d78b59efe3be276639d7c69f1e8 /src
parent0f6b9c324b62c759df945ad51d506c68fa0019d2 (diff)
downloademacs-8678b9ccf53e6e6e05af74b748e25e4dc55b84f2.tar.gz
emacs-8678b9ccf53e6e6e05af74b748e25e4dc55b84f2.zip
* frame.c (Fdelete_frame): Clear the frame's display after calling
the window-system-dependent frame destruction routine. We no longer need to pass the display as a separate argument to x_destroy_window. * xterm.c (x_destroy_window): Put the code which clears out f's display here, right after we free the storage it points to. Put everything, including the code which clears x_focus_frame and x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair. * frame.c (Fdelete_frame): Clear the frame's display after calling the window-system-dependent frame destruction routine. We no longer need to pass the display as a separate argument to x_destroy_window. * xterm.c (x_destroy_window): Put the code which clears out f's display here, right after we free the storage it points to. Put everything, including the code which clears x_focus_frame and x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair.
Diffstat (limited to 'src')
-rw-r--r--src/frame.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/frame.c b/src/frame.c
index e393e597e0a..7184c20b797 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -593,7 +593,6 @@ A frame may not be deleted if its minibuffer is used by other frames.")
593 Lisp_Object frame; 593 Lisp_Object frame;
594{ 594{
595 struct frame *f; 595 struct frame *f;
596 union display displ;
597 596
598 if (EQ (frame, Qnil)) 597 if (EQ (frame, Qnil))
599 { 598 {
@@ -654,14 +653,19 @@ A frame may not be deleted if its minibuffer is used by other frames.")
654 653
655 Vframe_list = Fdelq (frame, Vframe_list); 654 Vframe_list = Fdelq (frame, Vframe_list);
656 FRAME_SET_VISIBLE (f, 0); 655 FRAME_SET_VISIBLE (f, 0);
657 displ = f->display;
658 f->display.nothing = 0;
659 656
657 /* Since some events are handled at the interrupt level, we may get
658 an event for f at any time; if we zero out the frame's display
659 now, then we may trip up the event-handling code. Instead, we'll
660 promise that the display of the frame must be valid until we have
661 called the window-system-dependent frame destruction routine. */
660#ifdef HAVE_X_WINDOWS 662#ifdef HAVE_X_WINDOWS
661 if (FRAME_X_P (f)) 663 if (FRAME_X_P (f))
662 x_destroy_window (f, displ); 664 x_destroy_window (f);
663#endif 665#endif
664 666
667 f->display.nothing = 0;
668
665 /* If we've deleted the last_nonminibuf_frame, then try to find 669 /* If we've deleted the last_nonminibuf_frame, then try to find
666 another one. */ 670 another one. */
667 if (f == last_nonminibuf_frame) 671 if (f == last_nonminibuf_frame)