]> git.eshelyaron.com Git - emacs.git/commitdiff
Prevent endless loop in x_make_frame_visible.
authorJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Apr 2014 09:07:58 +0000 (11:07 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Apr 2014 09:07:58 +0000 (11:07 +0200)
* xterm.c (x_make_frame_visible): Prevent endless loop when frame
never becomes visible, i.e. using XMonad .

Fixes: debbugs:17237
src/ChangeLog
src/xterm.c

index 122b093f2a0cd0742daf59bdfc37394a75f5db96..bb3b87cfcf6442180798da427a5b833e239fe55d 100644 (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
index ae16e589f62854c4e01a91fb8ac836f7f5d7546b..ee8372fc65689d698496a94b2706bdeeaf4ce337 100644 (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