From: Jan Djärv Date: Thu, 17 Apr 2014 09:07:58 +0000 (+0200) Subject: Prevent endless loop in x_make_frame_visible. X-Git-Tag: emacs-24.3.91~132 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=53e46f3ad6c61d9c8398dd38de0277c8a7f2243b;p=emacs.git 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 --- diff --git a/src/ChangeLog b/src/ChangeLog index 122b093f2a0..bb3b87cfcf6 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-04-17 Jan Djärv + + * 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 * xdisp.c (Fline_pixel_height): Don't assume that the current diff --git a/src/xterm.c b/src/xterm.c index ae16e589f62..ee8372fc656 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -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