mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-07 07:58:51 +00:00
gst/: Pending ABI changes.
Original commit message from CVS: * gst/gstbin.h: * gst/gstelement.c: (gst_element_class_init), (gst_element_set_state), (gst_element_set_state_func): * gst/gstelement.h: Pending ABI changes. GThreadPool in GstBinClass to monitor async state changes. state_cookie in GstElement to detect concurrent gst/set state. set_state is now virtual too in case a very complicated element has to be constructed.
This commit is contained in:
parent
20aff65b34
commit
74c74e189e
4 changed files with 39 additions and 3 deletions
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2005-10-18 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
|
* gst/gstbin.h:
|
||||||
|
* gst/gstelement.c: (gst_element_class_init),
|
||||||
|
(gst_element_set_state), (gst_element_set_state_func):
|
||||||
|
* gst/gstelement.h:
|
||||||
|
Pending ABI changes.
|
||||||
|
GThreadPool in GstBinClass to monitor async state changes.
|
||||||
|
state_cookie in GstElement to detect concurrent gst/set state.
|
||||||
|
set_state is now virtual too in case a very complicated element
|
||||||
|
has to be constructed.
|
||||||
|
|
||||||
2005-10-18 Wim Taymans <wim@fluendo.com>
|
2005-10-18 Wim Taymans <wim@fluendo.com>
|
||||||
|
|
||||||
* check/gst/gstbin.c: (GST_START_TEST):
|
* check/gst/gstbin.c: (GST_START_TEST):
|
||||||
|
|
|
@ -104,6 +104,8 @@ struct _GstBinClass {
|
||||||
GstElementClass parent_class;
|
GstElementClass parent_class;
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
|
GThreadPool *pool;
|
||||||
|
|
||||||
/* signals */
|
/* signals */
|
||||||
void (*element_added) (GstBin *bin, GstElement *child);
|
void (*element_added) (GstBin *bin, GstElement *child);
|
||||||
void (*element_removed) (GstBin *bin, GstElement *child);
|
void (*element_removed) (GstBin *bin, GstElement *child);
|
||||||
|
|
|
@ -119,10 +119,10 @@ static GstStateChangeReturn gst_element_change_state (GstElement * element,
|
||||||
GstStateChange transition);
|
GstStateChange transition);
|
||||||
static GstStateChangeReturn gst_element_change_state_func (GstElement * element,
|
static GstStateChangeReturn gst_element_change_state_func (GstElement * element,
|
||||||
GstStateChange transition);
|
GstStateChange transition);
|
||||||
static GstStateChangeReturn gst_element_change_state_func (GstElement * element,
|
|
||||||
GstStateChange transition);
|
|
||||||
static GstStateChangeReturn gst_element_get_state_func (GstElement * element,
|
static GstStateChangeReturn gst_element_get_state_func (GstElement * element,
|
||||||
GstState * state, GstState * pending, GstClockTime timeout);
|
GstState * state, GstState * pending, GstClockTime timeout);
|
||||||
|
static GstStateChangeReturn gst_element_set_state_func (GstElement * element,
|
||||||
|
GstState state);
|
||||||
static void gst_element_set_bus_func (GstElement * element, GstBus * bus);
|
static void gst_element_set_bus_func (GstElement * element, GstBus * bus);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_LOADSAVE
|
#ifndef GST_DISABLE_LOADSAVE
|
||||||
|
@ -213,6 +213,7 @@ gst_element_class_init (GstElementClass * klass)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
klass->change_state = GST_DEBUG_FUNCPTR (gst_element_change_state_func);
|
klass->change_state = GST_DEBUG_FUNCPTR (gst_element_change_state_func);
|
||||||
|
klass->set_state = GST_DEBUG_FUNCPTR (gst_element_set_state_func);
|
||||||
klass->get_state = GST_DEBUG_FUNCPTR (gst_element_get_state_func);
|
klass->get_state = GST_DEBUG_FUNCPTR (gst_element_get_state_func);
|
||||||
klass->set_bus = GST_DEBUG_FUNCPTR (gst_element_set_bus_func);
|
klass->set_bus = GST_DEBUG_FUNCPTR (gst_element_set_bus_func);
|
||||||
klass->numpadtemplates = 0;
|
klass->numpadtemplates = 0;
|
||||||
|
@ -1929,6 +1930,26 @@ gst_element_lost_state (GstElement * element)
|
||||||
*/
|
*/
|
||||||
GstStateChangeReturn
|
GstStateChangeReturn
|
||||||
gst_element_set_state (GstElement * element, GstState state)
|
gst_element_set_state (GstElement * element, GstState state)
|
||||||
|
{
|
||||||
|
GstElementClass *oclass;
|
||||||
|
GstStateChangeReturn result = GST_STATE_CHANGE_FAILURE;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GST_IS_ELEMENT (element), GST_STATE_CHANGE_FAILURE);
|
||||||
|
|
||||||
|
oclass = GST_ELEMENT_GET_CLASS (element);
|
||||||
|
|
||||||
|
if (oclass->set_state)
|
||||||
|
result = (oclass->set_state) (element, state);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* default set state function, calculates the next state based
|
||||||
|
* on current state and calls the change_state function
|
||||||
|
*/
|
||||||
|
static GstStateChangeReturn
|
||||||
|
gst_element_set_state_func (GstElement * element, GstState state)
|
||||||
{
|
{
|
||||||
GstState current, next, old_pending;
|
GstState current, next, old_pending;
|
||||||
GstStateChangeReturn ret;
|
GstStateChangeReturn ret;
|
||||||
|
@ -2017,7 +2038,6 @@ was_busy:
|
||||||
|
|
||||||
return GST_STATE_CHANGE_ASYNC;
|
return GST_STATE_CHANGE_ASYNC;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* with STATE_LOCK */
|
/* with STATE_LOCK */
|
||||||
|
|
|
@ -296,6 +296,7 @@ struct _GstElement
|
||||||
/* element state */
|
/* element state */
|
||||||
GStaticRecMutex *state_lock;
|
GStaticRecMutex *state_lock;
|
||||||
GCond *state_cond;
|
GCond *state_cond;
|
||||||
|
guint32 state_cookie;
|
||||||
GstState current_state;
|
GstState current_state;
|
||||||
GstState next_state;
|
GstState next_state;
|
||||||
GstState pending_state;
|
GstState pending_state;
|
||||||
|
@ -355,6 +356,7 @@ struct _GstElementClass
|
||||||
/* state changes */
|
/* state changes */
|
||||||
GstStateChangeReturn (*get_state) (GstElement * element, GstState * state,
|
GstStateChangeReturn (*get_state) (GstElement * element, GstState * state,
|
||||||
GstState * pending, GstClockTime timeout);
|
GstState * pending, GstClockTime timeout);
|
||||||
|
GstStateChangeReturn (*set_state) (GstElement *element, GstState state);
|
||||||
GstStateChangeReturn (*change_state) (GstElement *element, GstStateChange transition);
|
GstStateChangeReturn (*change_state) (GstElement *element, GstStateChange transition);
|
||||||
|
|
||||||
/* bus */
|
/* bus */
|
||||||
|
|
Loading…
Reference in a new issue