diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt index b4447d503d..1aacedf1a4 100644 --- a/docs/gst/gstreamer-sections.txt +++ b/docs/gst/gstreamer-sections.txt @@ -548,6 +548,7 @@ gst_element_is_locked_state gst_element_abort_state gst_element_continue_state gst_element_lost_state +gst_element_lost_state_full gst_element_state_get_name gst_element_state_change_return_get_name gst_element_sync_state_with_parent diff --git a/gst/gstelement.c b/gst/gstelement.c index 3d56e5982e..9bd65da395 100644 --- a/gst/gstelement.c +++ b/gst/gstelement.c @@ -2176,15 +2176,16 @@ complete: } /** - * gst_element_lost_state: + * gst_element_lost_state_full: * @element: a #GstElement the state is lost of + * @new_base_time: if a new base time should be distributed * * Brings the element to the lost state. The current state of the * element is copied to the pending state so that any call to * gst_element_get_state() will return %GST_STATE_CHANGE_ASYNC. * - * An ASYNC_START message is posted with an indication to distribute a new - * base_time to the element. + * An ASYNC_START message is posted with indication to distribute a new + * base_time to the element when @new_base_time is %TRUE. * If the element was PLAYING, it will go to PAUSED. The element * will be restored to its PLAYING state by the parent pipeline when it * prerolls again. @@ -2198,10 +2199,12 @@ complete: * This function is used internally and should normally not be called from * plugins or applications. * + * Since: 0.10.24 + * * MT safe. */ void -gst_element_lost_state (GstElement * element) +gst_element_lost_state_full (GstElement * element, gboolean new_base_time) { GstState old_state, new_state; GstMessage *message; @@ -2239,7 +2242,8 @@ gst_element_lost_state (GstElement * element) new_state, new_state, new_state); gst_element_post_message (element, message); - message = gst_message_new_async_start (GST_OBJECT_CAST (element), TRUE); + message = + gst_message_new_async_start (GST_OBJECT_CAST (element), new_base_time); gst_element_post_message (element, message); return; @@ -2259,6 +2263,24 @@ only_async_start: } } +/** + * gst_element_lost_state: + * @element: a #GstElement the state is lost of + * + * Brings the element to the lost state. This function calls + * gst_element_lost_state_full() with the new_base_time set to %TRUE. + * + * This function is used internally and should normally not be called from + * plugins or applications. + * + * MT safe. + */ +void +gst_element_lost_state (GstElement * element) +{ + gst_element_lost_state_full (element, TRUE); +} + /** * gst_element_set_state: * @element: a #GstElement to change state of. diff --git a/gst/gstelement.h b/gst/gstelement.h index 640c8407dc..543a3cae7b 100644 --- a/gst/gstelement.h +++ b/gst/gstelement.h @@ -654,6 +654,7 @@ GstStateChangeReturn gst_element_change_state (GstElement * element, GstStateChangeReturn gst_element_continue_state (GstElement * element, GstStateChangeReturn ret); void gst_element_lost_state (GstElement * element); +void gst_element_lost_state_full (GstElement * element, gboolean new_base_time); /* factory management */ GstElementFactory* gst_element_get_factory (GstElement *element); diff --git a/win32/common/libgstreamer.def b/win32/common/libgstreamer.def index c2ef2381ea..1db6f107a1 100644 --- a/win32/common/libgstreamer.def +++ b/win32/common/libgstreamer.def @@ -306,6 +306,7 @@ EXPORTS gst_element_link_pads gst_element_link_pads_filtered gst_element_lost_state + gst_element_lost_state_full gst_element_make_from_uri gst_element_message_full gst_element_no_more_pads