added this function to watch for children...

2005-10-14  Rodrigo Moya <rodrigo@novell.com>

	* gnome-settings-daemon.c (child_watch_cb): added this function to
	watch for children...
	(gnome_settings_daemon_spawn_with_input): ...started here, instead
	of just blocking.

	* gnome-settings-screensaver.c (gnome_settings_screensaver_load): do
	lazy loading of the screensaver.
	(really_start_screensaver): start on a 25 seconds timeout.

	* gnome-settings-typing-break.c (gnome_settings_typing_break_load): do
	lazy loading og the typing break applet.
	(really_setup_typing_break): start on a 30 seconds timeout.

2005-10-14  Erwann Chenede <erwann.chenede@sun.com>

	Fixes #314774

	* gnome-settings-xrdb.c (gnome_settings_xrdb_load): connect to
	"notify:gtk-theme-name" signal, to run xrdb only when the whole theme
	has been changed.
	(theme_changed): callback for "notify:gtk-theme-name".
This commit is contained in:
Rodrigo Moya 2005-10-15 21:56:43 +00:00 committed by Rodrigo Moya
parent ec9217a7ae
commit 259294fb02
6 changed files with 92 additions and 31 deletions

View file

@ -1,3 +1,27 @@
2005-10-14 Rodrigo Moya <rodrigo@novell.com>
* gnome-settings-daemon.c (child_watch_cb): added this function to
watch for children...
(gnome_settings_daemon_spawn_with_input): ...started here, instead
of just blocking.
* gnome-settings-screensaver.c (gnome_settings_screensaver_load): do
lazy loading of the screensaver.
(really_start_screensaver): start on a 25 seconds timeout.
* gnome-settings-typing-break.c (gnome_settings_typing_break_load): do
lazy loading og the typing break applet.
(really_setup_typing_break): start on a 30 seconds timeout.
2005-10-14 Erwann Chenede <erwann.chenede@sun.com>
Fixes #314774
* gnome-settings-xrdb.c (gnome_settings_xrdb_load): connect to
"notify:gtk-theme-name" signal, to run xrdb only when the whole theme
has been changed.
(theme_changed): callback for "notify:gtk-theme-name".
2005-10-10 Jürg Billeter <j@bitron.ch>
reviewed by: Sergey V. Udaltsov <svu@gnome.org>

View file

@ -58,4 +58,4 @@ int main (int argc, char *argv [])
gtk_main();
return -1;
}
}

View file

@ -446,6 +446,19 @@ wait_for_child (int pid,
return TRUE;
}
static void
child_watch_cb (GPid pid, gint status, gpointer user_data)
{
gchar *command = user_data;
if (!WIFEXITED (status) || WEXITSTATUS (status))
{
g_warning ("Command %s failed", command);
}
g_free (command);
}
/*
* Helper function for spawn_with_input() - write an entire
@ -493,6 +506,7 @@ gnome_settings_daemon_spawn_with_input (char **argv,
int child_pid;
int inpipe;
GError *err = NULL;
gchar *command;
if (!g_spawn_async_with_pipes (NULL /* working directory */, argv, NULL /* envp */,
G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
@ -509,25 +523,16 @@ gnome_settings_daemon_spawn_with_input (char **argv,
return;
}
command = g_strjoinv (" ", argv);
if (input)
{
if (!write_all (inpipe, input, strlen (input)))
{
gchar *command = g_strjoinv (" ", argv);
g_warning ("Could not write input to %s", command);
g_free (command);
}
close (inpipe);
}
wait_for_child (child_pid, &exit_status);
if (!WIFEXITED (exit_status) || WEXITSTATUS (exit_status))
{
gchar *command = g_strjoinv (" ", argv);
g_warning ("Command %s failed", command);
g_free (command);
}
g_child_watch_add (child_pid, (GChildWatchFunc) child_watch_cb, command);
}

View file

@ -70,25 +70,21 @@ key_toggled_cb (GtkWidget *toggle, gpointer data)
g_object_unref (client);
}
void
gnome_settings_screensaver_load (GConfClient *client)
static gboolean
really_start_screensaver (gpointer user_data)
{
GError *gerr = NULL;
gboolean start_screensaver, use_gscreensaver = FALSE;
gboolean use_gscreensaver = FALSE;
gboolean show_error;
GtkWidget *dialog, *toggle;
gchar *ss_command;
start_screensaver = gconf_client_get_bool (client, START_SCREENSAVER_KEY, NULL);
if (!start_screensaver)
return;
GConfClient *client;
if ((ss_command = g_find_program_in_path ("gnome-screensaver")))
use_gscreensaver = TRUE;
else {
if (!(ss_command = g_find_program_in_path ("xscreensaver")))
return;
return FALSE;
}
g_free (ss_command);
@ -98,12 +94,14 @@ gnome_settings_screensaver_load (GConfClient *client)
ss_command = XSCREENSAVER_COMMAND;
if (g_spawn_command_line_async (ss_command, &gerr))
return;
return FALSE;
client = gconf_client_get_default ();
show_error = gconf_client_get_bool (client, SHOW_STARTUP_ERRORS_KEY, NULL);
g_object_unref (client);
if (!show_error) {
g_error_free (gerr);
return;
return FALSE;
}
dialog = gtk_message_dialog_new (NULL,
@ -137,5 +135,20 @@ gnome_settings_screensaver_load (GConfClient *client)
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
gtk_widget_show (dialog);
return FALSE;
}
void
gnome_settings_screensaver_load (GConfClient *client)
{
gboolean start_screensaver;
start_screensaver = gconf_client_get_bool (client, START_SCREENSAVER_KEY, NULL);
if (!start_screensaver)
return;
g_timeout_add (25000, (GSourceFunc) really_start_screensaver, NULL);
}

View file

@ -88,10 +88,16 @@ gnome_settings_typing_break_init (GConfClient *client)
gnome_settings_daemon_register_callback ("/desktop/gnome/typing_break", typing_break_callback);
}
static gboolean
really_setup_typing_break (gpointer user_data)
{
setup_typing_break (TRUE);
return FALSE;
}
void
gnome_settings_typing_break_load (GConfClient *client)
{
if (gconf_client_get_bool (client, "/desktop/gnome/typing_break/enabled", NULL))
setup_typing_break (TRUE);
g_timeout_add (30000, (GSourceFunc) really_setup_typing_break, NULL);
}

View file

@ -321,8 +321,9 @@ apply_settings (GtkStyle *style)
return;
}
static void
style_set_cb (GtkWidget *widget, GtkStyle *s, gpointer data)
static void theme_changed (GtkSettings *settings,
GParamSpec *pspec,
GtkWidget *widget)
{
apply_settings (gtk_widget_get_style (widget));
}
@ -330,13 +331,25 @@ style_set_cb (GtkWidget *widget, GtkStyle *s, gpointer data)
void
gnome_settings_xrdb_init (GConfClient *client)
{
widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (widget, "style-set", (GCallback)style_set_cb, NULL);
gtk_widget_ensure_style (widget);
}
void
gnome_settings_xrdb_load (GConfClient *client)
{
style_set_cb (widget, NULL, NULL);
static gboolean initialized = FALSE;
if (!initialized)
{ /* the initialization is done here otherwise
gnome_settings_xsettings_load would generate
false hit as gtk-theme-name is set to Default in
gnome_settings_xsettings_init */
GtkSettings *settings = gtk_settings_get_default ();
widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (settings,
"notify::gtk-theme-name",
G_CALLBACK (theme_changed),
widget);
gtk_widget_ensure_style (widget);
initialized = TRUE;
}
}