* frame.c (other_visible_frames): Don't assume selected frame is visible.

Fixes: debbugs:10955
This commit is contained in:
Chong Yidong 2012-03-10 15:46:07 +08:00
parent 7a2c7ca7ca
commit 1de11f569d
2 changed files with 25 additions and 29 deletions

View file

@ -1,3 +1,8 @@
2012-03-10 Chong Yidong <cyd@gnu.org>
* frame.c (other_visible_frames): Don't assume the selected frame
is visible (Bug#10955).
2012-03-09 Stefan Monnier <monnier@iro.umontreal.ca>
* buffer.c (compare_overlays): Avoid qsort's instability (bug#6830).

View file

@ -1118,41 +1118,32 @@ Otherwise, include all frames. */)
static int
other_visible_frames (FRAME_PTR f)
{
/* We know the selected frame is visible,
so if F is some other frame, it can't be the sole visible one. */
if (f == SELECTED_FRAME ())
Lisp_Object frames;
for (frames = Vframe_list; CONSP (frames); frames = XCDR (frames))
{
Lisp_Object frames;
int count = 0;
Lisp_Object this = XCAR (frames);
if (f == XFRAME (this))
continue;
for (frames = Vframe_list;
CONSP (frames);
frames = XCDR (frames))
{
Lisp_Object this;
this = XCAR (frames);
/* Verify that the frame's window still exists
and we can still talk to it. And note any recent change
in visibility. */
/* Verify that we can still talk to the frame's X window,
and note any recent change in visibility. */
#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (XFRAME (this)))
{
x_sync (XFRAME (this));
FRAME_SAMPLE_VISIBILITY (XFRAME (this));
}
if (FRAME_WINDOW_P (XFRAME (this)))
{
x_sync (XFRAME (this));
FRAME_SAMPLE_VISIBILITY (XFRAME (this));
}
#endif
if (FRAME_VISIBLE_P (XFRAME (this))
|| FRAME_ICONIFIED_P (XFRAME (this))
/* Allow deleting the terminal frame when at least
one X frame exists! */
|| (FRAME_WINDOW_P (XFRAME (this)) && !FRAME_WINDOW_P (f)))
count++;
}
return count > 1;
if (FRAME_VISIBLE_P (XFRAME (this))
|| FRAME_ICONIFIED_P (XFRAME (this))
/* Allow deleting the terminal frame when at least one X
frame exists. */
|| (FRAME_WINDOW_P (XFRAME (this)) && !FRAME_WINDOW_P (f)))
return 1;
}
return 1;
return 0;
}
/* Delete FRAME. When FORCE equals Qnoelisp, delete FRAME