placesview: plug some memory leaks

The GFile containing the Computer item was not
properly dereferenced, so plug that leak by both
dereferencing it and adding some reference management
on GtkPlacesViewRow.
This commit is contained in:
Georges Basile Stavracas Neto 2015-07-28 06:51:14 -03:00
parent a5e762e6a7
commit 317ba620e2
2 changed files with 17 additions and 3 deletions

View File

@ -874,6 +874,9 @@ add_computer (GtkPlacesView *view)
NULL);
insert_row (view, row, FALSE);
g_object_unref (icon);
g_object_unref (file);
}
static void

View File

@ -56,6 +56,16 @@ enum {
static GParamSpec *properties [LAST_PROP];
static void
gtk_places_view_row_finalize (GObject *object)
{
GtkPlacesViewRow *self = GTK_PLACES_VIEW_ROW (object);
g_clear_object (&self->volume);
g_clear_object (&self->mount);
g_clear_object (&self->file);
}
static void
gtk_places_view_row_get_property (GObject *object,
guint prop_id,
@ -125,16 +135,16 @@ gtk_places_view_row_set_property (GObject *object,
break;
case PROP_VOLUME:
self->volume = g_value_get_object (value);
g_set_object (&self->volume, g_value_get_object (value));
break;
case PROP_MOUNT:
self->mount = g_value_get_object (value);
g_set_object (&self->mount, g_value_get_object (value));
gtk_widget_set_visible (GTK_WIDGET (self->eject_button), self->mount != NULL);
break;
case PROP_FILE:
self->file = g_value_get_object (value);
g_set_object (&self->file, g_value_get_object (value));
break;
default:
@ -148,6 +158,7 @@ gtk_places_view_row_class_init (GtkPlacesViewRowClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = gtk_places_view_row_finalize;
object_class->get_property = gtk_places_view_row_get_property;
object_class->set_property = gtk_places_view_row_set_property;