* src/xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Oct 2011 17:44:39 +0000 (13:44 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Oct 2011 17:44:39 +0000 (13:44 -0400)
errors in XSetWindowBorder.

Fixes: debbugs:9310

src/ChangeLog
src/xterm.c

index 52fe8ba..79503c1 100644 (file)
@@ -1,3 +1,8 @@
+2011-10-14  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained
+       errors in XSetWindowBorder (bug#9310).
+
 2011-10-13  Dmitry Antipov  <dmantipov@yandex.ru>
 
        * editfns.c (Fset_time_zone_rule): Replace free with xfree to
@@ -71,8 +76,8 @@
 
 2011-10-07  Stefan Monnier  <monnier@iro.umontreal.ca>
 
-       * buffer.c (syms_of_buffer) <enable-multibyte-characters>: Don't
-       advertise functionality which we discourage or doesn't work.
+       * buffer.c (syms_of_buffer) <enable-multibyte-characters>:
+       Don't advertise functionality which we discourage or doesn't work.
 
 2011-10-07  Paul Eggert  <eggert@cs.ucla.edu>
 
 2011-09-17  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (reseat_at_next_visible_line_start): Keep information
-       about the current paragraph and restore it after the call to
-       reseat.
+       about the current paragraph and restore it after the call to reseat.
 
        * bidi.c (MAX_PARAGRAPH_SEARCH): New macro.
        (bidi_find_paragraph_start): Search back for paragraph beginning
        * doprnt.c (doprnt): Support printing ptrdiff_t and intmax_t values.
        (esprintf, exprintf, evxprintf): New functions.
        * keyboard.c (command_loop_level): Now EMACS_INT, not int.
-       (cmd_error): kbd macro iterations count is now EMACS_INT, not int.
+       (cmd_error): Kbd macro iterations count is now EMACS_INT, not int.
        (modify_event_symbol): Do not assume that the length of
        name_alist_or_stem is safe to alloca and fits in int.
        (Fexecute_extended_command): Likewise for function name and binding.
 
 2011-08-18  Andreas Schwab  <schwab@linux-m68k.org>
 
-       * process.c (Fnetwork_interface_list): Correctly determine buffer
-       size.
+       * process.c (Fnetwork_interface_list): Correctly determine buffer size.
 
 2011-08-17  Chong Yidong  <cyd@stupidchicken.com>
 
 
 2011-08-15  Eli Zaretskii  <eliz@gnu.org>
 
-       * biditype.h: File removed.
-
-       * bidimirror.h: File removed.
-
-       * deps.mk (bidi.o): Remove biditype.h and
-       bidimirror.h.
-
-       * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and
-       bidimirror.h.
+       * bidimirror.h:
+       * biditype.h: Remove file.
+       * makefile.w32-in ($(BLD)/bidi.$(O)):
+       * deps.mk (bidi.o): Remove biditype.h and bidimirror.h.
 
        * dispextern.h: Fix a typo in the comment to bidi_type_t.
 
 
 2011-08-04  Andreas Schwab  <schwab@linux-m68k.org>
 
-       * regex.c (re_iswctype): Remove some redundant boolean
-       conversions.
+       * regex.c (re_iswctype): Remove some redundant boolean conversions.
 
 2011-08-04  Jan Djärv  <jan.h.d@swipnet.se>
 
 2011-07-15  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (move_it_in_display_line_to): Fix vertical motion with
-       bidi redisplay when a line includes both an image and is
-       truncated.
+       bidi redisplay when a line includes both an image and is truncated.
 
 2011-07-14  Paul Eggert  <eggert@cs.ucla.edu>
 
index 4d3b572..333132b 100644 (file)
@@ -3355,8 +3355,14 @@ frame_highlight (struct frame *f)
      and border pixel are window attributes which are "private to the
      client", so we can always change it to whatever we want.  */
   BLOCK_INPUT;
+  /* I recently started to get errors in this XSetWindowBorder, depending on
+     the window-manager in use, tho something more is at play since I've been
+     using that same window-manager binary for ever.  Let's not crash just
+     because of this (bug#9310).  */
+  x_catch_errors (FRAME_X_DISPLAY (f));
   XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                    f->output_data.x->border_pixel);
+  x_uncatch_errors ();
   UNBLOCK_INPUT;
   x_update_cursor (f, 1);
   x_set_frame_alpha (f);
@@ -3370,8 +3376,11 @@ frame_unhighlight (struct frame *f)
      and border pixel are window attributes which are "private to the
      client", so we can always change it to whatever we want.  */
   BLOCK_INPUT;
+  /* Same as above for XSetWindowBorder (bug#9310).  */
+  x_catch_errors (FRAME_X_DISPLAY (f));
   XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                          f->output_data.x->border_tile);
+  x_uncatch_errors ();
   UNBLOCK_INPUT;
   x_update_cursor (f, 1);
   x_set_frame_alpha (f);