--- origsrc/emacs-24.0.97/src/xfns.c 2012-05-14 08:00:02.000000000 -0400 +++ src/emacs-24.0.97/src/xfns.c 2012-05-21 07:20:22.595785300 -0400 @@ -136,7 +136,7 @@ char *gray_bitmap_bits = gray_bits; /* Nonzero if using X. */ -static int x_in_use; +int x_in_use; static Lisp_Object Qnone; static Lisp_Object Qsuppress_icon; --- origsrc/emacs-24.0.97/src/xgselect.c 2012-05-14 08:00:02.000000000 -0400 +++ src/emacs-24.0.97/src/xgselect.c 2012-05-21 07:18:32.983123300 -0400 @@ -27,28 +27,33 @@ along with GNU Emacs. If not, see #include #include +#include "xterm.h" static GPollFD *gfds; static ptrdiff_t gfds_size; int -xg_select (int max_fds, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, +xg_select (int fds_lim, SELECT_TYPE *rfds, SELECT_TYPE *wfds, SELECT_TYPE *efds, EMACS_TIME *timeout) { SELECT_TYPE all_rfds, all_wfds; EMACS_TIME tmo, *tmop = timeout; - GMainContext *context = g_main_context_default (); + GMainContext *context; int have_wfds = wfds != NULL; - int n_gfds = 0, our_tmo = 0, retval = 0, our_fds = 0; + int n_gfds = 0, our_tmo = 0, retval = 0, our_fds = 0, max_fds = fds_lim - 1; int i, nfds, tmo_in_millisec; + if (!x_in_use) + return select (fds_lim, rfds, wfds, efds, timeout); + if (rfds) memcpy (&all_rfds, rfds, sizeof (all_rfds)); else FD_ZERO (&all_rfds); if (wfds) memcpy (&all_wfds, wfds, sizeof (all_rfds)); else FD_ZERO (&all_wfds); /* Update event sources in GLib. */ + context = g_main_context_default (); g_main_context_pending (context); do { @@ -97,14 +102,14 @@ xg_select (int max_fds, SELECT_TYPE *rfd if (our_tmo) tmop = &tmo; } - nfds = select (max_fds+1, &all_rfds, have_wfds ? &all_wfds : NULL, - efds, tmop); + fds_lim = max_fds + 1; + nfds = select (fds_lim, &all_rfds, have_wfds ? &all_wfds : NULL, efds, tmop); if (nfds < 0) retval = nfds; else if (nfds > 0) { - for (i = 0; i < max_fds+1; ++i) + for (i = 0; i < fds_lim; ++i) { if (FD_ISSET (i, &all_rfds)) { --- origsrc/emacs-24.0.97/src/xterm.h 2012-04-07 23:03:02.000000000 -0400 +++ src/emacs-24.0.97/src/xterm.h 2012-05-21 07:19:12.967143300 -0400 @@ -1038,6 +1038,7 @@ extern void x_clipboard_manager_save_all extern struct x_display_info * check_x_display_info (Lisp_Object); extern Lisp_Object x_get_focus_frame (struct frame *); +extern int x_in_use; #ifdef USE_GTK extern int xg_set_icon (struct frame *, Lisp_Object);