mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-19 00:01:23 +00:00
validate:scenario: Allow link up of action executions for overriden types
Exposing a GstValidateActionType.overriden_type field And properly expose gst_validate_execute_action
This commit is contained in:
parent
19f9172586
commit
a69af22ca9
2 changed files with 20 additions and 8 deletions
|
@ -246,6 +246,9 @@ _action_type_free (GstValidateActionType * type)
|
|||
g_free (type->description);
|
||||
g_free (type->name);
|
||||
g_free (type->implementer_namespace);
|
||||
|
||||
if (type->overriden_type)
|
||||
gst_mini_object_unref (GST_MINI_OBJECT (type->overriden_type));
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -951,12 +954,16 @@ _should_execute_action (GstValidateScenario * scenario, GstValidateAction * act,
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static GstValidateExecuteActionReturn
|
||||
_execute_action (GstValidateActionType * action_type,
|
||||
GstValidateExecuteActionReturn
|
||||
gst_validate_execute_action (GstValidateActionType * action_type,
|
||||
GstValidateAction * action)
|
||||
{
|
||||
GstValidateExecuteActionReturn res =
|
||||
action_type->execute (action->scenario, action);
|
||||
GstValidateExecuteActionReturn res;
|
||||
|
||||
g_return_val_if_fail (g_strcmp0 (action_type->name, action->type) == 0,
|
||||
GST_VALIDATE_EXECUTE_ACTION_ERROR);
|
||||
|
||||
res = action_type->execute (action->scenario, action);
|
||||
|
||||
if (!gst_structure_has_field (action->structure, "sub-action")) {
|
||||
gst_structure_free (action->structure);
|
||||
|
@ -1082,7 +1089,7 @@ get_position (GstValidateScenario * scenario)
|
|||
" at %" GST_TIME_FORMAT, act->structure, GST_TIME_ARGS (position));
|
||||
priv->seeked_in_pause = FALSE;
|
||||
|
||||
act->state = _execute_action (type, act);
|
||||
act->state = gst_validate_execute_action (type, act);
|
||||
if (act->state == GST_VALIDATE_EXECUTE_ACTION_ERROR) {
|
||||
gchar *str = gst_structure_to_string (act->structure);
|
||||
|
||||
|
@ -2242,7 +2249,7 @@ _execute_sub_action_action (GstValidateAction * action)
|
|||
gst_validate_printf (action->scenario, "Executing sub action of type %s",
|
||||
action->type);
|
||||
|
||||
res = _execute_action (action_type, action);
|
||||
res = gst_validate_execute_action (action_type, action);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -2380,7 +2387,7 @@ gst_validate_register_action_type_dynamic (GstPlugin * plugin,
|
|||
if ((tmptype = _find_action_type (type_name))) {
|
||||
if (tmptype->rank <= rank) {
|
||||
action_types = g_list_remove (action_types, tmptype);
|
||||
gst_mini_object_unref (GST_MINI_OBJECT (tmptype));
|
||||
type->overriden_type = tmptype;
|
||||
} else {
|
||||
gst_mini_object_unref (GST_MINI_OBJECT (type));
|
||||
|
||||
|
|
|
@ -157,8 +157,10 @@ struct _GstValidateActionType
|
|||
|
||||
GstRank rank;
|
||||
|
||||
GstValidateActionType *overriden_type;
|
||||
|
||||
/*< private >*/
|
||||
gpointer _gst_reserved[GST_PADDING_LARGE - sizeof (GstRank)];
|
||||
gpointer _gst_reserved[GST_PADDING_LARGE - sizeof (GstRank) - 1];
|
||||
};
|
||||
|
||||
#define GST_TYPE_VALIDATE_ACTION_TYPE (gst_validate_action_type_get_type ())
|
||||
|
@ -273,6 +275,9 @@ gboolean gst_validate_scenario_execute_seek (GstValidateScenario *scenario,
|
|||
|
||||
GstValidateAction *
|
||||
gst_validate_scenario_get_next_action (GstValidateScenario *scenario);
|
||||
GstValidateExecuteActionReturn
|
||||
gst_validate_execute_action (GstValidateActionType * action_type,
|
||||
GstValidateAction * action);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
Loading…
Reference in a new issue