1 From c3ebeec5a54c6c00bf30f7196968a9369c3d8205 Mon Sep 17 00:00:00 2001
2 From: Wim Taymans <wim.taymans@collabora.co.uk>
3 Date: Mon, 24 Aug 2009 13:06:28 +0000
4 Subject: playbin2: fix refcounting of _get_sink()
6 g_value_set_object() increases the refcount of the sink, which is not needed
7 because the object should already be refcounted. Make sure this is always the
8 case and use g_value_take_object().
12 diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c
13 index 6fc8d2d..24071b5 100644
14 --- a/gst/playback/gstplaybin2.c
15 +++ b/gst/playback/gstplaybin2.c
16 @@ -1618,8 +1618,12 @@ gst_play_bin_get_current_sink (GstPlayBin * playbin, GstElement ** elem,
17 GST_PTR_FORMAT ", the originally set %s sink is %" GST_PTR_FORMAT,
18 dbg, sink, dbg, *elem);
23 + GST_PLAY_BIN_LOCK (playbin);
25 + gst_object_ref (sink);
26 + GST_PLAY_BIN_UNLOCK (playbin);
31 @@ -1720,26 +1724,26 @@ gst_play_bin_get_property (GObject * object, guint prop_id, GValue * value,
32 GST_PLAY_BIN_UNLOCK (playbin);
35 - g_value_set_object (value,
36 + g_value_take_object (value,
37 gst_play_bin_get_current_sink (playbin, &playbin->video_sink,
38 "video", GST_PLAY_SINK_TYPE_VIDEO));
41 - g_value_set_object (value,
42 + g_value_take_object (value,
43 gst_play_bin_get_current_sink (playbin, &playbin->audio_sink,
44 "audio", GST_PLAY_SINK_TYPE_AUDIO));
47 - g_value_set_object (value,
48 + g_value_take_object (value,
49 gst_play_sink_get_vis_plugin (playbin->playsink));
52 - g_value_set_object (value,
53 + g_value_take_object (value,
54 gst_play_bin_get_current_sink (playbin, &playbin->text_sink,
55 "text", GST_PLAY_SINK_TYPE_TEXT));
57 case PROP_SUBPIC_SINK:
58 - g_value_set_object (value,
59 + g_value_take_object (value,
60 gst_play_bin_get_current_sink (playbin, &playbin->subpic_sink,
61 "subpicture", GST_PLAY_SINK_TYPE_SUBPIC));