fixed memory leaks
authorVlad <vlad@gas.by>
Thu, 29 Jul 2010 07:20:47 +0000 (10:20 +0300)
committerVlad <vlad@gas.by>
Thu, 29 Jul 2010 07:20:47 +0000 (10:20 +0300)
applet/src/livewp-settings.c

index aa5af85..3d5b343 100644 (file)
@@ -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)));
                     }
                 }