aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
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)