diff src/xsettings.c @ 106186:9b6f45dd8386

Use a select wrapper around the GLib event loop, thus taking into account GLib timeouts and event sources. This simplifies Gtk+-code a lot, and is needed for handling GConf death/restart. * xterm.c: #include xgselect.h. (x_initialize): Call xgselect_initialize. * xsettings.c (something_changedCB): C++ comments => C comments. (init_gconf): Do not deal with any GLib file descriptors, xg_select does that now. * gtkutil.c (xg_timer, xg_process_timeouts, xg_start_timer) (xg_stop_timer, menu_grab_callback_cnt, menu_grab_callback) (scroll_bar_button_cb): Remove. (create_menus): C++ comments => C comments. Don't bind grab-notify event. (xg_create_scroll_bar): Don't bind button-press-event and button-release-event. * process.c: Include xgselect.h if defined (USE_GTK) || defined (HAVE_GCONF). (wait_reading_process_output): Call xg_select for the same condition. * xgselect.c (xg_select): New function to better integrate with GLib/Gtk event handling. Needed if GConf daemon dies/restarts. * xgselect.h: New file, declare xg_select, xgselect_initialize. * Makefile.in (XOBJ): Add xgselect.o.
author Jan Djärv <jan.h.d@swipnet.se>
date Sat, 21 Nov 2009 15:28:59 +0000
parents 4cee82a6f25b
children 01190029e5d3
line wrap: on
line diff
--- a/src/xsettings.c	Sat Nov 21 11:52:23 2009 +0000
+++ b/src/xsettings.c	Sat Nov 21 15:28:59 2009 +0000
@@ -82,7 +82,7 @@
       const char *value = gconf_value_get_string (v);
       int i;
       if (current_mono_font != NULL && strcmp (value, current_mono_font) == 0)
-        return; // No change.
+        return; /* No change. */
 
       xfree (current_mono_font);
       current_mono_font = xstrdup (value);
@@ -501,24 +501,6 @@
 #if defined (HAVE_GCONF) && defined (HAVE_XFT)
   int i;
   char *s;
-  /* Should be enough, this is called at startup */
-#define N_FDS 1024
-  int fd_before[N_FDS], fd_before1[N_FDS];
-  int dummy, n_fds;
-  GPollFD gfds[N_FDS];
-
-  /* To find out which filedecriptors GConf uses, check before and after.
-     If we do not do this, GConf changes will only happen when Emacs gets
-     an X event.  */
-  memset (fd_before, 0, sizeof (fd_before));
-  n_fds = g_main_context_query (g_main_context_default (),
-                                G_PRIORITY_LOW,
-                                &dummy,
-                                gfds,
-                                N_FDS);
-  for (i = 0; i < n_fds; ++i)
-    if (gfds[i].fd < N_FDS && gfds[i].fd > 0 && gfds[i].events > 0)
-      fd_before[gfds[i].fd] = 1;
 
   g_type_init ();
   gconf_client = gconf_client_get_default ();
@@ -537,25 +519,6 @@
                            SYSTEM_MONO_FONT,
                            something_changedCB,
                            NULL, NULL, NULL);
-  n_fds = g_main_context_query (g_main_context_default (),
-                                G_PRIORITY_LOW,
-                                &dummy,
-                                gfds,
-                                N_FDS);
-
-  for (i = 0; i < n_fds; ++i)
-    if (gfds[i].fd < N_FDS && gfds[i].fd > 0 && gfds[i].events > 0
-        && !fd_before[gfds[i].fd])
-      {
-#ifdef F_SETOWN
-        fcntl (i, F_SETOWN, getpid ());
-#endif /* ! defined (F_SETOWN) */
-
-#ifdef SIGIO
-        if (interrupt_input)
-          init_sigio (i);
-#endif /* ! defined (SIGIO) */
-      }
 #endif /* HAVE_GCONF && HAVE_XFT */
 }