emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-24 4d2e7e1: Fixes: debbugs:19175


From: Jan D.
Subject: [Emacs-diffs] emacs-24 4d2e7e1: Fixes: debbugs:19175
Date: Sun, 29 Mar 2015 19:16:33 +0000

branch: emacs-24
commit 4d2e7e17547edda414129aeee910cd0334b4e85e
Author: Jan D <address@hidden>
Commit: Jan D <address@hidden>

    Fixes: debbugs:19175
    
    * gtkutil.c (xg_display_open):
    * xterm.c (x_display_ok, x_term_init): Block SIGIO when opening
    a display.
---
 src/ChangeLog |    6 ++++++
 src/gtkutil.c |    2 ++
 src/xterm.c   |   12 +++++++++++-
 3 files changed, 19 insertions(+), 1 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e679348..39b3c9f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2015-03-29  Jan Djärv  <address@hidden>
+
+       * gtkutil.c (xg_display_open):
+       * xterm.c (x_display_ok, x_term_init): Block SIGIO when opening
+       a display (Bug#19175).
+
 2015-04-01  Nicolas Petton  <address@hidden>
 
        * Version 24.5 released.
diff --git a/src/gtkutil.c b/src/gtkutil.c
index fedaa0f..eddd2b5 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -167,7 +167,9 @@ xg_display_open (char *display_name, Display **dpy)
 {
   GdkDisplay *gdpy;
 
+  unrequest_sigio ();  // See comment in x_display_ok, xterm.c.
   gdpy = gdk_display_open (display_name);
+  request_sigio ();
   if (!gdpy_def && gdpy)
     {
       gdpy_def = gdpy;
diff --git a/src/xterm.c b/src/xterm.c
index 4ca1e13..2ac2fe8 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -9719,7 +9719,11 @@ get_bits_and_offset (unsigned long mask, int *bits, int 
*offset)
 bool
 x_display_ok (const char *display)
 {
-  Display *dpy = XOpenDisplay (display);
+  Display *dpy;
+  // XOpenDisplay fails if it gets a signal.  Block SIGIO which may arrive.
+  unrequest_sigio ();
+  dpy = XOpenDisplay (display);
+  request_sigio ();
   return dpy ? (XCloseDisplay (dpy), 1) : 0;
 }
 
@@ -9811,7 +9815,9 @@ x_term_init (Lisp_Object display_name, char *xrm_option, 
char *resource_name)
 
         /* gtk_init does set_locale.  Fix locale before and after.  */
         fixup_locale ();
+        unrequest_sigio (); // See comment in x_display_ok.
         gtk_init (&argc, &argv2);
+        request_sigio ();
         fixup_locale ();
 
         g_log_remove_handler ("GLib", id);
@@ -9861,10 +9867,12 @@ x_term_init (Lisp_Object display_name, char 
*xrm_option, char *resource_name)
        argv[argc++] = xrm_option;
       }
     turn_on_atimers (0);
+    unrequest_sigio ();  // See comment in x_display_ok.
     dpy = XtOpenDisplay (Xt_app_con, SSDATA (display_name),
                         resource_name, EMACS_CLASS,
                         emacs_options, XtNumber (emacs_options),
                         &argc, argv);
+    request_sigio ();
     turn_on_atimers (1);
 
 #ifdef HAVE_X11XTR6
@@ -9875,7 +9883,9 @@ x_term_init (Lisp_Object display_name, char *xrm_option, 
char *resource_name)
 
 #else /* not USE_X_TOOLKIT */
   XSetLocaleModifiers ("");
+  unrequest_sigio ();  // See comment in x_display_ok.
   dpy = XOpenDisplay (SSDATA (display_name));
+  request_sigio ();
 #endif /* not USE_X_TOOLKIT */
 #endif /* not USE_GTK*/
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]