In the GTK+ model, when a wiget is created, it is floating, thus
when it is added to a widget container, this container is the owner
of the widget.
The video_area widget is created in two different paths:
1\ when the renderer element is also a GTK+ widget and we are
the owners.
2\ when the renderer element is an overlay an video area a new
widget owned by the container.
In the first code path, there was a memory leak fixed on commit
f8d4796a, but it didn't consider the second path, leading to a
segmentation fault because the owner of the widget is not us.
This patch unrefs early the video area widget in the first path
avoiding to unref it twice in the second path.
https://bugzilla.gnome.org/show_bug.cgi?id=781904
play->video_area =
gst_player_gtk_video_renderer_get_widget (GST_PLAYER_GTK_VIDEO_RENDERER
(play->renderer));
+ g_object_unref (play->video_area);
} else {
play->renderer = gst_player_video_overlay_video_renderer_new (NULL);
g_object_unref (self->player);
}
self->player = NULL;
- g_clear_object (&self->video_area);
G_OBJECT_CLASS (gtk_play_parent_class)->dispose (object);
}