summaryrefslogtreecommitdiff
path: root/gtk/gtkviewport.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-06-05 19:36:36 -0400
committerMatthias Clasen <mclasen@redhat.com>2016-06-05 20:00:43 -0400
commitc8cab6a79ae9adbfc34b2a73e95c553d7980f39e (patch)
tree4479b4f7f00a95783a826ea91ea089b850f9f1fe /gtk/gtkviewport.c
parentb4ebe4e5c1166b38ebb6230fea73873c7ebf5ac9 (diff)
downloadgtk+-c8cab6a79ae9adbfc34b2a73e95c553d7980f39e.tar.gz
viewport: Free gadgets in finalize
This is the right place for this.
Diffstat (limited to 'gtk/gtkviewport.c')
-rw-r--r--gtk/gtkviewport.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c
index 088951487e..a5487ffc70 100644
--- a/gtk/gtkviewport.c
+++ b/gtk/gtkviewport.c
@@ -103,6 +103,7 @@ static void gtk_viewport_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
+static void gtk_viewport_finalize (GObject *object);
static void gtk_viewport_destroy (GtkWidget *widget);
static void gtk_viewport_realize (GtkWidget *widget);
static void gtk_viewport_unrealize (GtkWidget *widget);
@@ -374,6 +375,7 @@ gtk_viewport_class_init (GtkViewportClass *class)
gobject_class->set_property = gtk_viewport_set_property;
gobject_class->get_property = gtk_viewport_get_property;
+ gobject_class->finalize = gtk_viewport_finalize;
widget_class->destroy = gtk_viewport_destroy;
widget_class->realize = gtk_viewport_realize;
@@ -575,13 +577,22 @@ gtk_viewport_destroy (GtkWidget *widget)
viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_HORIZONTAL);
viewport_disconnect_adjustment (viewport, GTK_ORIENTATION_VERTICAL);
- g_clear_object (&priv->gadget);
-
GTK_WIDGET_CLASS (gtk_viewport_parent_class)->destroy (widget);
g_clear_pointer (&priv->pixel_cache, _gtk_pixel_cache_free);
}
+static void
+gtk_viewport_finalize (GObject *object)
+{
+ GtkViewport *viewport = GTK_VIEWPORT (object);
+ GtkViewportPrivate *priv = viewport->priv;
+
+ g_clear_object (&priv->gadget);
+
+ G_OBJECT_CLASS (gtk_viewport_parent_class)->finalize (object);
+}
+
/**
* gtk_viewport_get_hadjustment:
* @viewport: a #GtkViewport.