diff options
author | Brian Cameron <brian.cameron@sun.com> | 2006-07-17 19:06:29 +0000 |
---|---|---|
committer | Brian Cameron <bcameron@src.gnome.org> | 2006-07-17 19:06:29 +0000 |
commit | 152b618931f0d6146fcd48b19d30eb6db21d48ff (patch) | |
tree | a2eee52073932aed1c5cee0edb38b349ce2b0dc7 /gui | |
parent | 08435152020d392430c4c8157f688ce02e7becee (diff) | |
download | gdm-152b618931f0d6146fcd48b19d30eb6db21d48ff.tar.gz |
Fix for bug causing gdmsetup to have performance issues starting up. Fixes
2006-07-17 Brian Cameron <brian.cameron@sun.com>
* gui/gdmsetup.c: Fix for bug causing gdmsetup to have
performance issues starting up. Fixes bug #345118.
Patch by Ray Strode <rstrode@redhat.com>.
Diffstat (limited to 'gui')
-rw-r--r-- | gui/gdmsetup.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/gui/gdmsetup.c b/gui/gdmsetup.c index de7a2e85..3ebe4eb3 100644 --- a/gui/gdmsetup.c +++ b/gui/gdmsetup.c @@ -5412,15 +5412,13 @@ background_filechooser_response (GtkWidget *file_chooser, gpointer data) if (filename != NULL && (strcmp (ve_sure_string (value), ve_sure_string (filename)) != 0)) { - g_signal_handlers_disconnect_by_func (file_chooser, - (gpointer) background_filechooser_response, - file_chooser); - - gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_chooser), - filename); + gchar *old_filename; + old_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); - g_signal_connect (G_OBJECT (file_chooser), "selection-changed", - G_CALLBACK (background_filechooser_response), file_chooser); + if (strcmp (old_filename, filename) == 0) + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_chooser), + filename); + g_free (old_filename); if (strcmp (ve_sure_string (value), ve_sure_string (filename)) != 0) { gdm_setup_config_set_string (key, (char *)ve_sure_string (filename)); @@ -5449,7 +5447,7 @@ logo_filechooser_response (GtkWidget *file_chooser, gpointer data) * value to the default in this case seems to work around this. */ if (filename == NULL && !ve_string_empty (value)) - filename = value; + filename = g_strdup (value); if (filename == NULL) { value = gdm_config_get_string (GDM_KEY_CHOOSER_BUTTON_LOGO); @@ -5470,15 +5468,14 @@ logo_filechooser_response (GtkWidget *file_chooser, gpointer data) if (filename != NULL && (strcmp (ve_sure_string (value), ve_sure_string (filename)) != 0)) { - g_signal_handlers_disconnect_by_func (file_chooser, - (gpointer) logo_filechooser_response, - file_chooser); + gchar *old_filename; - gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_chooser), - filename); + old_filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser)); - g_signal_connect (G_OBJECT (file_chooser), "selection-changed", - G_CALLBACK (logo_filechooser_response), file_chooser); + if (strcmp (old_filename, filename) != 0) + gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (file_chooser), + filename); + g_free (old_filename); if (GTK_TOGGLE_BUTTON (image_toggle)->active == TRUE) { gdm_setup_config_set_string (key, |