mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-03 01:02:19 +00:00
uridecodebin: use non-floating object as signal argument
... as was the case with source-setup signal until change of order
in commit 52bca104e4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1457>
This commit is contained in:
parent
1564567c3e
commit
41fe17adda
1 changed files with 13 additions and 0 deletions
|
@ -1321,6 +1321,8 @@ static const gchar *adaptive_media[] = {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generate and configure a source element.
|
* Generate and configure a source element.
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): a new #GstElement
|
||||||
*/
|
*/
|
||||||
static GstElement *
|
static GstElement *
|
||||||
gen_source_element (GstURIDecodeBin * decoder)
|
gen_source_element (GstURIDecodeBin * decoder)
|
||||||
|
@ -1397,6 +1399,15 @@ gen_source_element (GstURIDecodeBin * decoder)
|
||||||
g_object_set (source, "subtitle-encoding", decoder->encoding, NULL);
|
g_object_set (source, "subtitle-encoding", decoder->encoding, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Sink reference before passing it to signal handler.
|
||||||
|
* Language binding might otherwise sink it and then unref.
|
||||||
|
* A floating ref is also tricky for a native signal handler in case
|
||||||
|
* of a "transfer floating" call followed by unref
|
||||||
|
* (e.g. some container_add and then container_remove).
|
||||||
|
* Bottom line; best not have a floating ref boldly going into unknown code.
|
||||||
|
*/
|
||||||
|
g_object_ref_sink (source);
|
||||||
|
|
||||||
g_signal_emit (decoder, gst_uri_decode_bin_signals[SIGNAL_SOURCE_SETUP],
|
g_signal_emit (decoder, gst_uri_decode_bin_signals[SIGNAL_SOURCE_SETUP],
|
||||||
0, source);
|
0, source);
|
||||||
|
|
||||||
|
@ -2262,6 +2273,8 @@ setup_source (GstURIDecodeBin * decoder)
|
||||||
/* state will be merged later - if file is not found, error will be
|
/* state will be merged later - if file is not found, error will be
|
||||||
* handled by the application right after. */
|
* handled by the application right after. */
|
||||||
gst_bin_add (GST_BIN_CAST (decoder), decoder->source);
|
gst_bin_add (GST_BIN_CAST (decoder), decoder->source);
|
||||||
|
/* bin now has a ref, but the local reference is not counted */
|
||||||
|
g_object_unref (decoder->source);
|
||||||
|
|
||||||
/* notify of the new source used */
|
/* notify of the new source used */
|
||||||
g_object_notify (G_OBJECT (decoder), "source");
|
g_object_notify (G_OBJECT (decoder), "source");
|
||||||
|
|
Loading…
Reference in a new issue