From a0a9fd004b28b00472a393cebda534d3a8af5dc8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 1 Aug 2014 15:00:46 +0200 Subject: [PATCH] playbin: Keep a reference to the playsink sinkpads Otherwise playsink might get shut down without us noticing that our pad references are gone now. Probably fixes https://bugzilla.gnome.org/show_bug.cgi?id=733165 --- gst/playback/gstplaybin2.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/playback/gstplaybin2.c b/gst/playback/gstplaybin2.c index b717ac9..7b2c8cb 100644 --- a/gst/playback/gstplaybin2.c +++ b/gst/playback/gstplaybin2.c @@ -3452,6 +3452,7 @@ no_more_pads_cb (GstElement * decodebin, GstSourceGroup * group) GST_DEBUG_OBJECT (playbin, "requesting new sink pad %d", combine->type); combine->sinkpad = gst_play_sink_request_pad (playbin->playsink, combine->type); + gst_object_ref (combine->sinkpad); } else if (combine->srcpad && combine->sinkpad) { GST_DEBUG_OBJECT (playbin, "refreshing new sink pad %d", combine->type); gst_play_sink_refresh_pad (playbin->playsink, combine->sinkpad, @@ -3459,6 +3460,7 @@ no_more_pads_cb (GstElement * decodebin, GstSourceGroup * group) } else if (combine->sinkpad && combine->srcpad == NULL) { GST_DEBUG_OBJECT (playbin, "releasing sink pad %d", combine->type); gst_play_sink_release_pad (playbin->playsink, combine->sinkpad); + gst_object_unref (combine->sinkpad); combine->sinkpad = NULL; } if (combine->sinkpad && combine->srcpad && @@ -3564,6 +3566,7 @@ shutdown: combine->sinkpad = gst_play_sink_request_pad (playbin->playsink, GST_PLAY_SINK_TYPE_FLUSHING); + gst_object_ref (combine->sinkpad); res = gst_pad_link (combine->srcpad, combine->sinkpad); GST_DEBUG_OBJECT (playbin, "linked flushing, result: %d", res); } @@ -5279,6 +5282,7 @@ deactivate_group (GstPlayBin * playbin, GstSourceGroup * group) /* release back */ GST_LOG_OBJECT (playbin, "release sink pad"); gst_play_sink_release_pad (playbin->playsink, combine->sinkpad); + gst_object_unref (combine->sinkpad); combine->sinkpad = NULL; } -- 2.7.4