mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
gst/gstpad.c: Don't allow activation of a srcpad in pull_range if it has no getrange function.
Original commit message from CVS: * gst/gstpad.c: (gst_pad_activate_pull), (gst_pad_link_prepare): Don't allow activation of a srcpad in pull_range if it has no getrange function. Change some debug statements to be a little clearer * plugins/elements/gsttypefindelement.c: (gst_type_find_handle_src_query): Check that we have a peer before executing queries thereupon. * tests/examples/metadata/read-metadata.c: (message_loop): Use gst_bus_pop instead of gst_bus_poll when we just want it to immediately return us any available message with 0 timeout.
This commit is contained in:
parent
83a815e648
commit
bcdfacaf5d
4 changed files with 34 additions and 8 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
2005-12-14 Jan Schmidt <thaytan@mad.scientist.com>
|
||||||
|
|
||||||
|
* gst/gstpad.c: (gst_pad_activate_pull), (gst_pad_link_prepare):
|
||||||
|
Don't allow activation of a srcpad in pull_range if it has no
|
||||||
|
getrange function.
|
||||||
|
Change some debug statements to be a little clearer
|
||||||
|
|
||||||
|
* plugins/elements/gsttypefindelement.c:
|
||||||
|
(gst_type_find_handle_src_query):
|
||||||
|
Check that we have a peer before executing queries thereupon.
|
||||||
|
|
||||||
|
* tests/examples/metadata/read-metadata.c: (message_loop):
|
||||||
|
Use gst_bus_pop instead of gst_bus_poll when we just want it to
|
||||||
|
immediately return us any available message with 0 timeout.
|
||||||
|
|
||||||
2005-12-12 Michael Smith <msmith@fluendo.com>
|
2005-12-12 Michael Smith <msmith@fluendo.com>
|
||||||
|
|
||||||
* gst/gsttypefindfactory.c: (gst_type_find_factory_call_function):
|
* gst/gsttypefindfactory.c: (gst_type_find_factory_call_function):
|
||||||
|
|
|
@ -706,6 +706,10 @@ gst_pad_activate_pull (GstPad * pad, gboolean active)
|
||||||
goto peer_failed;
|
goto peer_failed;
|
||||||
gst_object_unref (peer);
|
gst_object_unref (peer);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if (GST_PAD_GETRANGEFUNC (pad) == NULL)
|
||||||
|
goto failure; /* Can't activate pull on a src without a
|
||||||
|
getrange function */
|
||||||
}
|
}
|
||||||
|
|
||||||
new = active ? GST_ACTIVATE_PULL : GST_ACTIVATE_NONE;
|
new = active ? GST_ACTIVATE_PULL : GST_ACTIVATE_NONE;
|
||||||
|
@ -1624,7 +1628,7 @@ not_srcpad:
|
||||||
}
|
}
|
||||||
src_was_linked:
|
src_was_linked:
|
||||||
{
|
{
|
||||||
GST_CAT_INFO (GST_CAT_PADS, "src %s:%s was linked",
|
GST_CAT_INFO (GST_CAT_PADS, "src %s:%s was already linked",
|
||||||
GST_DEBUG_PAD_NAME (srcpad));
|
GST_DEBUG_PAD_NAME (srcpad));
|
||||||
/* we do not emit a warning in this case because unlinking cannot
|
/* we do not emit a warning in this case because unlinking cannot
|
||||||
* be made MT safe.*/
|
* be made MT safe.*/
|
||||||
|
@ -1640,7 +1644,7 @@ not_sinkpad:
|
||||||
}
|
}
|
||||||
sink_was_linked:
|
sink_was_linked:
|
||||||
{
|
{
|
||||||
GST_CAT_INFO (GST_CAT_PADS, "sink %s:%s was linked",
|
GST_CAT_INFO (GST_CAT_PADS, "sink %s:%s was already linked",
|
||||||
GST_DEBUG_PAD_NAME (sinkpad));
|
GST_DEBUG_PAD_NAME (sinkpad));
|
||||||
/* we do not emit a warning in this case because unlinking cannot
|
/* we do not emit a warning in this case because unlinking cannot
|
||||||
* be made MT safe.*/
|
* be made MT safe.*/
|
||||||
|
|
|
@ -308,14 +308,19 @@ static gboolean
|
||||||
gst_type_find_handle_src_query (GstPad * pad, GstQuery * query)
|
gst_type_find_handle_src_query (GstPad * pad, GstQuery * query)
|
||||||
{
|
{
|
||||||
GstTypeFindElement *typefind;
|
GstTypeFindElement *typefind;
|
||||||
gboolean res;
|
gboolean res = FALSE;
|
||||||
|
GstPad *peer;
|
||||||
|
|
||||||
typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
|
typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
|
||||||
|
|
||||||
res = gst_pad_query (GST_PAD_PEER (typefind->sink), query);
|
peer = gst_pad_get_peer (typefind->sink);
|
||||||
if (!res)
|
if (peer == NULL)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
res = gst_pad_query (peer, query);
|
||||||
|
if (!res)
|
||||||
|
goto out;
|
||||||
|
|
||||||
switch (GST_QUERY_TYPE (query)) {
|
switch (GST_QUERY_TYPE (query)) {
|
||||||
case GST_QUERY_POSITION:
|
case GST_QUERY_POSITION:
|
||||||
{
|
{
|
||||||
|
@ -323,7 +328,7 @@ gst_type_find_handle_src_query (GstPad * pad, GstQuery * query)
|
||||||
GstFormat format;
|
GstFormat format;
|
||||||
|
|
||||||
if (typefind->store == NULL)
|
if (typefind->store == NULL)
|
||||||
return TRUE;
|
goto out;
|
||||||
|
|
||||||
gst_query_parse_position (query, &format, &peer_pos);
|
gst_query_parse_position (query, &format, &peer_pos);
|
||||||
|
|
||||||
|
@ -343,7 +348,9 @@ gst_type_find_handle_src_query (GstPad * pad, GstQuery * query)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
out:
|
||||||
|
gst_object_unref (peer);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
|
|
|
@ -51,7 +51,7 @@ message_loop (GstElement * element, GstTagList ** tags)
|
||||||
while (!done) {
|
while (!done) {
|
||||||
GstMessage *message;
|
GstMessage *message;
|
||||||
|
|
||||||
message = gst_bus_poll (bus, GST_MESSAGE_ANY, 0);
|
message = gst_bus_pop (bus);
|
||||||
if (message == NULL)
|
if (message == NULL)
|
||||||
/* All messages read, we're done */
|
/* All messages read, we're done */
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue