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:
parent
ec9217a7ae
commit
259294fb02
6 changed files with 92 additions and 31 deletions
|
@ -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>
|
||||
|
|
|
@ -58,4 +58,4 @@ int main (int argc, char *argv [])
|
|||
gtk_main();
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue