summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan D. <jan.h.d@swipnet.se>2014-04-17 11:07:58 +0200
committerJan D. <jan.h.d@swipnet.se>2014-04-17 11:07:58 +0200
commit15bc9c34c6ee7694f84e74472a8dc24c147948f4 (patch)
tree716f14bedacbd585e8cbb30d9e7051fbac9a6b21
parent1adab06bf17e39666f54556a8d447e8f6988a128 (diff)
downloademacs-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/ChangeLog5
-rw-r--r--src/xterm.c9
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