Mercurial > emacs
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 */ }