Fixed memory leak of the event window of the pannable.
authorAlejandro G. Castro <alex@igalia.com>
Tue, 11 Aug 2009 08:41:21 +0000 (10:41 +0200)
committerAlejandro G. Castro <alex@igalia.com>
Tue, 11 Aug 2009 08:41:21 +0000 (10:41 +0200)
* hildon/hildon-pannable-area.c
(hildon_pannable_area_button_press_cb),
(hildon_pannable_area_motion_notify_cb),
(hildon_pannable_area_button_release_cb): Added unrefs to reduce
the spurious ref added in the copy, fixes leak of window.

Fixes: NB#130900 (HildonPannableArea will leak it's event_window
if it's realized without showing and then deleted)

ChangeLog
hildon/hildon-pannable-area.c

index fe8620c..9f0b6e6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2009-08-11  Alejandro G. Castro  <alex@igalia.com>
+
+       * hildon/hildon-pannable-area.c
+       (hildon_pannable_area_button_press_cb),
+       (hildon_pannable_area_motion_notify_cb),
+       (hildon_pannable_area_button_release_cb): Added unrefs to reduce
+       the spurious ref added in the copy, fixes leak of window.
+
+       Fixes: NB#130900 (HildonPannableArea will leak it's event_window
+       if it's realized without showing and then deleted)
+
 2009-08-10  Alberto Garcia  <agarcia@igalia.com>
 
        [Release 2.1.94]
index 86342e4..33033dc 100644 (file)
@@ -1979,6 +1979,8 @@ hildon_pannable_area_button_press_cb (GtkWidget * widget,
                               (gpointer) & priv->child);
 
     event = (GdkEventButton *) gdk_event_copy ((GdkEvent *) event);
+    /* remove the reference we added with the copy */
+    g_object_unref (priv->event_window);
     event->x = x;
     event->y = y;
     priv->cx = x;
@@ -2638,6 +2640,8 @@ hildon_pannable_area_motion_notify_cb (GtkWidget * widget,
   if (priv->child) {
     /* Send motion notify to child */
     event = (GdkEventMotion *) gdk_event_copy ((GdkEvent *) event);
+    /* remove the reference we added with the copy */
+    g_object_unref (priv->event_window);
     event->x = priv->cx + (event->x - priv->ix);
     event->y = priv->cy + (event->y - priv->iy);
     event->window = g_object_ref (priv->child);
@@ -2779,6 +2783,8 @@ hildon_pannable_area_button_release_cb (GtkWidget * widget,
                                      event->x, event->y, &x, &y, GDK_BUTTON_RELEASE_MASK);
 
   event = (GdkEventButton *) gdk_event_copy ((GdkEvent *) event);
+  /* remove the reference we added with the copy */
+  g_object_unref (priv->event_window);
   event->x = x;
   event->y = y;