mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
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
This commit is contained in:
parent
b34e0ba91c
commit
a0a9fd004b
1 changed files with 4 additions and 0 deletions
|
@ -3452,6 +3452,7 @@ no_more_pads_cb (GstElement * decodebin, GstSourceGroup * group)
|
||||||
GST_DEBUG_OBJECT (playbin, "requesting new sink pad %d", combine->type);
|
GST_DEBUG_OBJECT (playbin, "requesting new sink pad %d", combine->type);
|
||||||
combine->sinkpad =
|
combine->sinkpad =
|
||||||
gst_play_sink_request_pad (playbin->playsink, combine->type);
|
gst_play_sink_request_pad (playbin->playsink, combine->type);
|
||||||
|
gst_object_ref (combine->sinkpad);
|
||||||
} else if (combine->srcpad && combine->sinkpad) {
|
} else if (combine->srcpad && combine->sinkpad) {
|
||||||
GST_DEBUG_OBJECT (playbin, "refreshing new sink pad %d", combine->type);
|
GST_DEBUG_OBJECT (playbin, "refreshing new sink pad %d", combine->type);
|
||||||
gst_play_sink_refresh_pad (playbin->playsink, combine->sinkpad,
|
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) {
|
} else if (combine->sinkpad && combine->srcpad == NULL) {
|
||||||
GST_DEBUG_OBJECT (playbin, "releasing sink pad %d", combine->type);
|
GST_DEBUG_OBJECT (playbin, "releasing sink pad %d", combine->type);
|
||||||
gst_play_sink_release_pad (playbin->playsink, combine->sinkpad);
|
gst_play_sink_release_pad (playbin->playsink, combine->sinkpad);
|
||||||
|
gst_object_unref (combine->sinkpad);
|
||||||
combine->sinkpad = NULL;
|
combine->sinkpad = NULL;
|
||||||
}
|
}
|
||||||
if (combine->sinkpad && combine->srcpad &&
|
if (combine->sinkpad && combine->srcpad &&
|
||||||
|
@ -3564,6 +3566,7 @@ shutdown:
|
||||||
combine->sinkpad =
|
combine->sinkpad =
|
||||||
gst_play_sink_request_pad (playbin->playsink,
|
gst_play_sink_request_pad (playbin->playsink,
|
||||||
GST_PLAY_SINK_TYPE_FLUSHING);
|
GST_PLAY_SINK_TYPE_FLUSHING);
|
||||||
|
gst_object_ref (combine->sinkpad);
|
||||||
res = gst_pad_link (combine->srcpad, combine->sinkpad);
|
res = gst_pad_link (combine->srcpad, combine->sinkpad);
|
||||||
GST_DEBUG_OBJECT (playbin, "linked flushing, result: %d", res);
|
GST_DEBUG_OBJECT (playbin, "linked flushing, result: %d", res);
|
||||||
}
|
}
|
||||||
|
@ -5279,6 +5282,7 @@ deactivate_group (GstPlayBin * playbin, GstSourceGroup * group)
|
||||||
/* release back */
|
/* release back */
|
||||||
GST_LOG_OBJECT (playbin, "release sink pad");
|
GST_LOG_OBJECT (playbin, "release sink pad");
|
||||||
gst_play_sink_release_pad (playbin->playsink, combine->sinkpad);
|
gst_play_sink_release_pad (playbin->playsink, combine->sinkpad);
|
||||||
|
gst_object_unref (combine->sinkpad);
|
||||||
combine->sinkpad = NULL;
|
combine->sinkpad = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue