Prevent endless loop in x_make_frame_visible.

* xterm.c (x_make_frame_visible): Prevent endless loop when frame
never becomes visible, i.e. using XMonad .

Fixes: debbugs:17237
This commit is contained in:
Jan Djärv 2014-04-17 11:07:58 +02:00
parent 8915b84286
commit 53e46f3ad6
2 changed files with 13 additions and 1 deletions

View file

@ -1,3 +1,8 @@
2014-04-17 Jan Djärv <jan.h.d@swipnet.se>
* xterm.c (x_make_frame_visible): Prevent endless loop when frame
never becomes visible, i.e. using XMonad (Bug#17237).
2014-04-17 Eli Zaretskii <eliz@gnu.org>
* xdisp.c (Fline_pixel_height): Don't assume that the current

View file

@ -8899,6 +8899,7 @@ void
x_make_frame_visible (struct frame *f)
{
int original_top, original_left;
int tries = 0;
block_input ();
@ -9006,7 +9007,13 @@ x_make_frame_visible (struct frame *f)
/* Force processing of queued events. */
x_sync (f);
/* This hack is still in use at least for Cygwin. See
/* If on another desktop, the deiconify/map may be ignored and the
frame never becomes visible. XMonad does this.
Prevent an endless loop. */
if (FRAME_ICONIFIED_P (f) && ++tries > 100)
break;
/* This hack is still in use at least for Cygwin. See
http://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00351.html.
Machines that do polling rather than SIGIO have been