diff options
author | Jan D. <jan.h.d@swipnet.se> | 2014-04-17 11:07:58 +0200 |
---|---|---|
committer | Jan D. <jan.h.d@swipnet.se> | 2014-04-17 11:07:58 +0200 |
commit | 15bc9c34c6ee7694f84e74472a8dc24c147948f4 (patch) | |
tree | 716f14bedacbd585e8cbb30d9e7051fbac9a6b21 | |
parent | 1adab06bf17e39666f54556a8d447e8f6988a128 (diff) | |
download | emacs-15bc9c34c6ee7694f84e74472a8dc24c147948f4.tar.gz |
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 .
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/xterm.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 4b50cff8714..8e316413bf4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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 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 |