mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-03 13:16:04 +00:00
bin: Don't interprete pipelines without sink elements as always being in EOS state
Some tests (e.g. elements/capsfilter) have pipelines with dangling sinkpads and without a sink element. These pipelines can never post an EOS message (because this is only valid by a sink) and as such should never get an EOS message posted by the bin.
This commit is contained in:
parent
cdffc1d5d5
commit
7316a88387
10
gst/gstbin.c
10
gst/gstbin.c
|
@ -996,6 +996,7 @@ static gboolean
|
||||||
is_eos (GstBin * bin, guint32 * seqnum)
|
is_eos (GstBin * bin, guint32 * seqnum)
|
||||||
{
|
{
|
||||||
gboolean result;
|
gboolean result;
|
||||||
|
gint n_eos = 0;
|
||||||
GList *walk, *msgs;
|
GList *walk, *msgs;
|
||||||
|
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
|
@ -1009,6 +1010,7 @@ is_eos (GstBin * bin, guint32 * seqnum)
|
||||||
find_message (bin, GST_OBJECT_CAST (element), GST_MESSAGE_EOS))) {
|
find_message (bin, GST_OBJECT_CAST (element), GST_MESSAGE_EOS))) {
|
||||||
GST_DEBUG ("sink '%s' posted EOS", GST_ELEMENT_NAME (element));
|
GST_DEBUG ("sink '%s' posted EOS", GST_ELEMENT_NAME (element));
|
||||||
*seqnum = gst_message_get_seqnum (GST_MESSAGE_CAST (msgs->data));
|
*seqnum = gst_message_get_seqnum (GST_MESSAGE_CAST (msgs->data));
|
||||||
|
n_eos++;
|
||||||
} else {
|
} else {
|
||||||
GST_DEBUG ("sink '%s' did not post EOS yet",
|
GST_DEBUG ("sink '%s' did not post EOS yet",
|
||||||
GST_ELEMENT_NAME (element));
|
GST_ELEMENT_NAME (element));
|
||||||
|
@ -1017,7 +1019,13 @@ is_eos (GstBin * bin, guint32 * seqnum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
/* FIXME: Some tests (e.g. elements/capsfilter) use
|
||||||
|
* pipelines with a dangling sinkpad but no sink element.
|
||||||
|
* These tests assume that no EOS message is ever
|
||||||
|
* posted on the bus so let's keep that behaviour.
|
||||||
|
* In valid pipelines this doesn't make a difference.
|
||||||
|
*/
|
||||||
|
return result && n_eos > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in a new issue