gnome-settings-daemon r292 - in trunk: . plugins/keyboard
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-settings-daemon r292 - in trunk: . plugins/keyboard
- Date: Thu, 10 Apr 2008 23:07:21 +0100 (BST)
Author: jensg
Date: Thu Apr 10 23:07:21 2008
New Revision: 292
URL: http://svn.gnome.org/viewvc/gnome-settings-daemon?rev=292&view=rev
Log:
2008-04-11 Jens Granseuer <jensgr gmx net>
* plugins/keyboard/gsd-xmodmap.c: (check_button_callback),
(gsd_load_modmap_files), (response_callback),
(remove_string_from_list), (remove_button_clicked_callback),
(load_button_clicked_callback), (gsd_modmap_dialog_call): fix
memory leaks
Modified:
trunk/ChangeLog
trunk/plugins/keyboard/gsd-xmodmap.c
Modified: trunk/plugins/keyboard/gsd-xmodmap.c
==============================================================================
--- trunk/plugins/keyboard/gsd-xmodmap.c (original)
+++ trunk/plugins/keyboard/gsd-xmodmap.c Thu Apr 10 23:07:21 2008
@@ -46,13 +46,11 @@
client = gconf_client_get_default ();
- if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk_button))) {
- gconf_client_set_bool (client, DISABLE_XMM_WARNING_KEY, TRUE,
- NULL);
- } else {
- gconf_client_set_bool (client, DISABLE_XMM_WARNING_KEY, FALSE,
- NULL);
- }
+ gconf_client_set_bool (client,
+ DISABLE_XMM_WARNING_KEY,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (chk_button)),
+ NULL);
+
g_object_unref (client);
}
@@ -60,21 +58,28 @@
gsd_load_modmap_files (void)
{
GConfClient *client;
- GSList *tmp = NULL;
+ GSList *tmp;
GSList *loaded_file_list;
client = gconf_client_get_default ();
loaded_file_list = gconf_client_get_list (client, LOADED_FILES_KEY, GCONF_VALUE_STRING, NULL);
- tmp = loaded_file_list;
- while (tmp != NULL) {
- gchar *command = NULL;
- command = g_strdup_printf ("xmodmap %s", g_build_filename (g_get_home_dir (), (gchar *)tmp->data, NULL));
+
+ for (tmp = loaded_file_list; tmp != NULL; tmp = tmp->next) {
+ gchar *file;
+ gchar *command;
+
+ file = g_build_filename (g_get_home_dir (), (gchar *) tmp->data);
+ command = g_strconcat ("xmodmap ", file, NULL);
+ g_free (file);
+
g_spawn_command_line_async (command, NULL);
- tmp = tmp->next;
+
g_free (command);
+ g_free (tmp->data);
}
+ g_slist_free (loaded_file_list);
g_object_unref (client);
}
@@ -88,7 +93,7 @@
check_button_callback (chk_button, NULL);
gsd_load_modmap_files ();
}
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_widget_destroy (dialog);
}
static void
@@ -116,17 +121,12 @@
{
GSList *tmp;
- tmp = list;
- while (tmp != NULL) {
- if (strcmp (tmp->data, str) == 0)
+ for (tmp = list; tmp != NULL; tmp = tmp->next) {
+ if (strcmp (tmp->data, str) == 0) {
+ g_free (tmp->data);
+ list = g_slist_delete_link (list, tmp);
break;
-
- tmp = tmp->next;
- }
-
- if (tmp != NULL) {
- g_free (tmp->data);
- list = g_slist_remove (list, tmp->data);
+ }
}
return list;
@@ -137,7 +137,6 @@
remove_button_clicked_callback (GtkWidget *button,
void *data)
{
- GladeXML *xml;
GtkWidget *dialog;
GtkListStore *tree = NULL;
GtkTreeSelection *selection;
@@ -149,8 +148,7 @@
dialog = data;
- xml = g_object_get_data (G_OBJECT (dialog), "treeview1");
- treeview = glade_xml_get_widget (xml, "treeview1");
+ treeview = g_object_get_data (G_OBJECT (dialog), "treeview1");
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
gtk_tree_selection_selected_foreach (selection,
@@ -180,15 +178,13 @@
tree = g_object_get_data (G_OBJECT (dialog), "tree");
gtk_list_store_clear (tree);
- tmp = loaded_files;
- while (tmp != NULL) {
+ for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
GtkTreeIter iter;
gtk_list_store_append (tree, &iter);
gtk_list_store_set (tree, &iter,
0,
- (char *)tmp->data,
+ tmp->data,
-1);
- tmp = tmp->next;
}
g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
@@ -227,37 +223,35 @@
LOADED_FILES_KEY,
GCONF_VALUE_STRING,
NULL);
- tmp = loaded_files;
- while (tmp != NULL) {
- if (strcmp (tmp->data, (char *)filenames->data) == 0)
- return;;
-
- tmp = tmp->next;
+ if (g_slist_find_custom (loaded_files, filenames->data, (GCompareFunc) strcmp)) {
+ g_free (filenames->data);
+ g_slist_free (filenames);
+ goto out;
}
- loaded_files = g_slist_append (loaded_files, (char *)filenames->data);
+ loaded_files = g_slist_append (loaded_files, filenames->data);
gconf_client_set_list (client,
LOADED_FILES_KEY,
GCONF_VALUE_STRING,
loaded_files,
NULL);
- g_object_unref (client);
tree = g_object_get_data (G_OBJECT (dialog), "tree");
gtk_list_store_clear (tree);
- tmp = loaded_files;
- while (tmp != NULL) {
+ for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
GtkTreeIter iter;
gtk_list_store_append (tree, &iter);
gtk_list_store_set (tree, &iter,
0,
- (char *)tmp->data,
+ tmp->data,
-1);
- tmp = tmp->next;
}
+
+out:
+ g_object_unref (client);
g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
g_slist_free (loaded_files);
}
@@ -279,9 +273,9 @@
GtkWidget *add_button;
GtkWidget *remove_button;
GtkWidget *chk_button;
- GSList *tmp = NULL;
+ GSList *tmp;
GDir *homeDir;
- GSList *loaded_files = NULL;
+ GSList *loaded_files;
const char *fname;
GConfClient *client;
@@ -291,38 +285,38 @@
xml = glade_xml_new (DATADIR "/modmap-dialog.glade", "dialog1", NULL);
- if (! xml) {
- g_warning ("Could not find glade file\n");
+ if (!xml) {
+ g_warning ("Could not find glade file");
+ g_dir_close (homeDir);
return;
}
load_dialog = glade_xml_get_widget (xml, "dialog1");
gtk_window_set_modal (GTK_WINDOW (load_dialog), TRUE);
- g_signal_connect (G_OBJECT (load_dialog),
+ g_signal_connect (load_dialog,
"response",
G_CALLBACK (response_callback),
xml);
add_button = glade_xml_get_widget (xml, "button7");
- g_signal_connect (G_OBJECT (add_button),
+ g_signal_connect (add_button,
"clicked",
G_CALLBACK (load_button_clicked_callback),
load_dialog);
remove_button = glade_xml_get_widget (xml, "button6");
- g_signal_connect (G_OBJECT (remove_button),
+ g_signal_connect (remove_button,
"clicked",
G_CALLBACK (remove_button_clicked_callback),
load_dialog);
chk_button = glade_xml_get_widget (xml, "checkbutton1");
- g_signal_connect (G_OBJECT (chk_button),
+ g_signal_connect (chk_button,
"toggled",
G_CALLBACK (check_button_callback),
NULL);
g_object_set_data (G_OBJECT (load_dialog), "check_button", chk_button);
- g_object_set_data (G_OBJECT (load_dialog), "treeview1", xml);
+ treeview = glade_xml_get_widget (xml, "treeview1");
+ g_object_set_data (G_OBJECT (load_dialog), "treeview1", treeview);
treeview = glade_xml_get_widget (xml, "treeview2");
- g_object_set_data (G_OBJECT (load_dialog),
- "loaded-treeview",
- treeview);
+ g_object_set_data (G_OBJECT (load_dialog), "loaded-treeview", treeview);
tree = gtk_list_store_new (1, G_TYPE_STRING);
cell_renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("modmap",
@@ -338,7 +332,7 @@
gtk_list_store_append (tree, &parent_iter);
gtk_list_store_set (tree, &parent_iter,
0,
- g_strdup (fname),
+ fname,
-1);
}
}
@@ -371,18 +365,17 @@
g_object_unref (client);
/* Add the data */
- tmp = loaded_files;
- while (tmp != NULL) {
- gchar *command = NULL;
+ for (tmp = loaded_files; tmp != NULL; tmp = tmp->next) {
gtk_list_store_append (tree, &iter);
gtk_list_store_set (tree, &iter,
0,
- (char *)tmp->data,
+ tmp->data,
-1);
- tmp = tmp->next;
- g_free (command);
}
+ g_slist_foreach (loaded_files, (GFunc) g_free, NULL);
+ g_slist_free (loaded_files);
+
sort_model = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (tree));
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (sort_model),
0,
@@ -393,5 +386,5 @@
gtk_tree_selection_set_mode (GTK_TREE_SELECTION (selection),
GTK_SELECTION_MULTIPLE);
g_object_set_data (G_OBJECT (load_dialog), "tree", tree);
-
+ g_object_unref (xml);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]