rtspsrc: Don't propagate spurious state change returns from internal elements further

We handle them inside rtspsrc and override them in all other cases anyway, so
do the same for "internal" state changes like PAUSED->PAUSED and
PLAYING->PLAYING.

This keeps unexpected NO_PREROLL to confuse state changes in GstBin.

See also https://bugzilla.gnome.org/show_bug.cgi?id=760532

https://bugzilla.gnome.org/show_bug.cgi?id=765689
This commit is contained in:
Sebastian Dröge 2016-04-27 18:27:17 +03:00
parent e538608b3f
commit d24e68719b

View file

@ -7790,6 +7790,16 @@ gst_rtspsrc_change_state (GstElement * element, GstStateChange transition)
ret = GST_STATE_CHANGE_SUCCESS;
break;
default:
/* Otherwise it's success, we don't want to return spurious
* NO_PREROLL or ASYNC from internal elements as we care for
* state changes ourselves here
*
* This is to catch PAUSED->PAUSED and PLAYING->PLAYING transitions.
*/
if (GST_STATE_TRANSITION_NEXT (transition) == GST_STATE_PAUSED)
ret = GST_STATE_CHANGE_NO_PREROLL;
else
ret = GST_STATE_CHANGE_SUCCESS;
break;
}