[maemo-commits] [maemo-commits] r13971 - in projects/haf/trunk/hildon-1: . src

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Fri Sep 21 12:10:50 EEST 2007
Author: mdk
Date: 2007-09-21 12:10:48 +0300 (Fri, 21 Sep 2007)
New Revision: 13971

Modified:
   projects/haf/trunk/hildon-1/ChangeLog
   projects/haf/trunk/hildon-1/src/hildon-color-chooser-dialog.c
   projects/haf/trunk/hildon-1/src/hildon-color-chooser.c
   projects/haf/trunk/hildon-1/src/hildon-font-selection-dialog.c
Log:
Adding two patches by Tommi to fix memory leaks in font selector and color selector. Fixes: NB#70499 and NB#70474.


Modified: projects/haf/trunk/hildon-1/ChangeLog
===================================================================
--- projects/haf/trunk/hildon-1/ChangeLog	2007-09-21 08:25:13 UTC (rev 13970)
+++ projects/haf/trunk/hildon-1/ChangeLog	2007-09-21 09:10:48 UTC (rev 13971)
@@ -1,3 +1,11 @@
+2007-09-21  Michael Dominic Kostrzewa  <michael.kostrzewa at nokia.com> 
+
+	* src/hildon-color-chooser-dialog.c:
+	* src/hildon-color-chooser.c:
+	* src/hildon-font-selection-dialog.c: Adding two patches by Tommi to fix
+	memory leaks in font selector and color selector. Fixes: NB#70499 and
+	NB#70474.
+
 2007-09-20  Johan Bilien  <johan.bilien at nokia.com> 
 
 	* src/hildon-helper.c: Fixed the leak of the a GList. Fixes: NB#70273.

Modified: projects/haf/trunk/hildon-1/src/hildon-color-chooser-dialog.c
===================================================================
--- projects/haf/trunk/hildon-1/src/hildon-color-chooser-dialog.c	2007-09-21 08:25:13 UTC (rev 13970)
+++ projects/haf/trunk/hildon-1/src/hildon-color-chooser-dialog.c	2007-09-21 09:10:48 UTC (rev 13971)
@@ -489,6 +489,7 @@
 
     for (i = 0; i < tmp; i++) {
         g_object_unref (priv->gc_array[i]);
+	priv->gc_array[i] = NULL;
     }
 
     GTK_WIDGET_CLASS (parent_class)->unrealize (widget);
@@ -538,6 +539,7 @@
 
                 for (i = 0; i < tmpn; i++) {
                     g_object_unref (priv->gc_array[i]);
+		    priv->gc_array[i] = NULL;
                 }
             }
 
@@ -556,6 +558,11 @@
             (priv->style_info.num_buttons.top * priv->style_info.num_buttons.bottom);
 
         priv->gc_array = (GdkGC **) g_malloc0 (sizeof (GdkGC *) * tmpn);
+	if (GTK_WIDGET_REALIZED (widget)) {
+                for (i = 0; i < tmpn; i++) {
+		    priv->gc_array[i] = gdk_gc_new (widget->window);
+                }
+	}
 
         if (priv->gconf_client) {
 
@@ -1013,7 +1020,7 @@
 
     if (tmp1) {
         priv->style_info.cont_sizes = *tmp1;
-        g_free (tmp1);
+        gtk_border_free (tmp1);
     } else {
         priv->style_info.cont_sizes.left = 0;
         priv->style_info.cont_sizes.right = 8;
@@ -1023,7 +1030,7 @@
 
     if (tmp2) {
         priv->style_info.radio_sizes = *tmp2;
-        g_free (tmp2);
+        gtk_border_free (tmp2);
     } else {
         priv->style_info.radio_sizes.left = 16;
         priv->style_info.radio_sizes.right = 16;
@@ -1033,7 +1040,7 @@
 
     if (tmp3) {
         priv->style_info.num_buttons = *tmp3;
-        g_free (tmp3);
+        gtk_border_free (tmp3);
     } else {
         priv->style_info.num_buttons.left = 8;
         priv->style_info.num_buttons.right = 2;

Modified: projects/haf/trunk/hildon-1/src/hildon-color-chooser.c
===================================================================
--- projects/haf/trunk/hildon-1/src/hildon-color-chooser.c	2007-09-21 08:25:13 UTC (rev 13970)
+++ projects/haf/trunk/hildon-1/src/hildon-color-chooser.c	2007-09-21 09:10:48 UTC (rev 13971)
@@ -73,6 +73,9 @@
 static void
 hildon_color_chooser_realize                    (GtkWidget *widget);
 
+static void
+hildon_color_chooser_unrealize                  (GtkWidget *widget);
+
 static void 
 hildon_color_chooser_map                        (GtkWidget *widget);
 
@@ -262,6 +265,7 @@
     widget_class->size_request          = hildon_color_chooser_size_request;
     widget_class->size_allocate         = hildon_color_chooser_size_allocate;
     widget_class->realize               = hildon_color_chooser_realize;
+    widget_class->unrealize             = hildon_color_chooser_unrealize;
     widget_class->map                   = hildon_color_chooser_map;
     widget_class->unmap                 = hildon_color_chooser_unmap;
     widget_class->expose_event          = hildon_color_chooser_expose;
@@ -403,11 +407,24 @@
 
 
     gdk_window_set_user_data (priv->event_window, widget);
-    widget->window = gtk_widget_get_parent_window (widget);
 
-    widget->style = gtk_style_attach (widget->style, widget->window);
+    GTK_WIDGET_CLASS (parent_class)->realize (widget);
+}
 
-    GTK_WIDGET_SET_FLAGS (widget, GTK_REALIZED);
+static void
+hildon_color_chooser_unrealize                  (GtkWidget *widget)
+{
+    HildonColorChooserPrivate *priv = HILDON_COLOR_CHOOSER_GET_PRIVATE (widget);
+
+    g_assert (priv);
+
+    if (priv->event_window) {
+	gdk_window_set_user_data (priv->event_window, NULL);
+	gdk_window_destroy (priv->event_window);
+	priv->event_window = NULL;
+    }
+
+    GTK_WIDGET_CLASS(parent_class)->unrealize(widget);
 }
 
 static void 

Modified: projects/haf/trunk/hildon-1/src/hildon-font-selection-dialog.c
===================================================================
--- projects/haf/trunk/hildon-1/src/hildon-font-selection-dialog.c	2007-09-21 08:25:13 UTC (rev 13970)
+++ projects/haf/trunk/hildon-1/src/hildon-font-selection-dialog.c	2007-09-21 09:10:48 UTC (rev 13971)
@@ -889,6 +889,8 @@
                 priv->cbx_positioning, NULL,
                 HILDON_CAPTION_OPTIONAL);
 
+    g_object_unref (group);
+
     gtk_box_pack_start (GTK_BOX (vbox_tab[2]), caption_control, FALSE, FALSE, 0);
 
     /* Populate notebook */


More information about the maemo-commits mailing list