pad: Drop renegotiate event if there is no getcaps function on a sink pad

If there is no custom getcaps function on a sink pad, then changes in
downstream caps will never be propagated, so there is no point in trying to
renegotiate the capabilities.
This commit is contained in:
Olivier Crête 2010-03-17 21:17:10 +00:00 committed by Sebastian Dröge
parent 0179530bf1
commit 581533cd00

View file

@ -4539,6 +4539,9 @@ gst_pad_push_event (GstPad * pad, GstEvent * event)
goto flushed;
}
break;
case GST_EVENT_RENEGOTIATE:
if (GST_PAD_IS_SINK (pad) && GST_PAD_GETCAPSFUNC (pad) == NULL)
goto drop_renegotiate;
default:
while (G_UNLIKELY (GST_PAD_IS_BLOCKED (pad))) {
/* block the event as long as the pad is blocked */
@ -4920,6 +4923,14 @@ concurrent_stop:
GST_OBJECT_UNLOCK (pad);
return TRUE;
}
drop_renegotiate:
{
GST_CAT_DEBUG_OBJECT (GST_CAT_EVENT, pad,
"No getcaps function on sink pad, dropping renegotiate event");
gst_event_unref (event);
GST_OBJECT_UNLOCK (pad);
return FALSE;
}
}
/**