From ba3d10734532a1ba6b89046e6fd6c57ef13ef763 Mon Sep 17 00:00:00 2001 From: Vlad Date: Thu, 29 Jul 2010 10:20:47 +0300 Subject: [PATCH] fixed memory leaks --- applet/src/livewp-settings.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/applet/src/livewp-settings.c b/applet/src/livewp-settings.c index aa5af85..3d5b343 100644 --- a/applet/src/livewp-settings.c +++ b/applet/src/livewp-settings.c @@ -103,11 +103,13 @@ create_image_button (gint view, DBusConnection *conn_sess){ Animation_WallpaperPrivate *priv = g_new0(Animation_WallpaperPrivate, 1); priv->view = view; + priv->theme_string_parametr1 = NULL; priv->dbus_conn_session = conn_sess; read_config(priv); button = hildon_button_new(HILDON_SIZE_AUTO_WIDTH | HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL); g_object_set_data(G_OBJECT(button), "view", GINT_TO_POINTER(view)); + g_object_set_data(G_OBJECT(button), "priv", priv); set_button_image(button, priv->theme, check_applet_state(view)); g_signal_connect(button, "clicked", G_CALLBACK(theme_button_clicked), priv); hildon_button_set_image_position (HILDON_BUTTON (button), GTK_POS_RIGHT); @@ -217,6 +219,7 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){ GtkWidget *theme_button3; GtkWidget *theme_button4; GtkWidget *hbox; + Animation_WallpaperPrivate *priv_temp = NULL; window = gtk_dialog_new(); @@ -252,11 +255,34 @@ lw_main_settings(Animation_WallpaperPrivate *priv, gpointer data){ switch(result){ case GTK_RESPONSE_NO: - gtk_widget_destroy(window); +// gtk_widget_destroy(window); window = NULL; lw_about(); break; } + + priv_temp = g_object_get_data(G_OBJECT(theme_button1), "priv"); + if (priv_temp){ + g_free(priv_temp); + priv_temp =NULL; + } + priv_temp = g_object_get_data(G_OBJECT(theme_button2), "priv"); + if (priv_temp){ + g_free(priv_temp); + priv_temp =NULL; + } + priv_temp = g_object_get_data(G_OBJECT(theme_button3), "priv"); + if (priv_temp){ + g_free(priv_temp); + priv_temp =NULL; + } + priv_temp = g_object_get_data(G_OBJECT(theme_button4), "priv"); + if (priv_temp){ + g_free(priv_temp); + priv_temp =NULL; + } + + if (window) gtk_widget_destroy(window); } @@ -267,7 +293,7 @@ file_button_clicked(GtkButton *button, Animation_WallpaperPrivate *priv){ GtkWidget *dialog = hildon_file_chooser_dialog_new(GTK_WINDOW (priv->window), GTK_FILE_CHOOSER_ACTION_OPEN); if (priv->theme_string_parametr1) - gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), priv->theme_string_parametr1); + gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), priv->theme_string_parametr1); gtk_widget_show_all (GTK_WIDGET (dialog)); @@ -382,7 +408,7 @@ lw_theme_settings(GtkWidget *button, Animation_WallpaperPrivate *priv) { if (button1){ if (priv->theme_string_parametr1) g_free(priv->theme_string_parametr1); - priv->theme_string_parametr1 = hildon_button_get_value (HILDON_BUTTON(button1)); + priv->theme_string_parametr1 = g_strdup((gchar*)hildon_button_get_value (HILDON_BUTTON(button1))); } } -- 1.7.9.5