validate:scenario: Make the action->prepare function return a GstValidateExecuteActionReturn

Implementers might want to report the error themselves
This commit is contained in:
Thibault Saunier 2020-03-03 21:36:21 -03:00
parent 7898d5b347
commit f24ca37794
2 changed files with 12 additions and 11 deletions

View file

@ -1833,12 +1833,13 @@ gst_validate_execute_action (GstValidateActionType * action_type,
scenario = gst_validate_action_get_scenario (action); scenario = gst_validate_action_get_scenario (action);
if (action_type->prepare) { if (action_type->prepare) {
if (action_type->prepare (action) == FALSE) { res = action_type->prepare (action);
if (res != GST_VALIDATE_EXECUTE_ACTION_OK) {
GST_ERROR_OBJECT (scenario, "Action %" GST_PTR_FORMAT GST_ERROR_OBJECT (scenario, "Action %" GST_PTR_FORMAT
" could not be prepared", action->structure); " could not be prepared", action->structure);
gst_object_unref (scenario); gst_object_unref (scenario);
return GST_VALIDATE_EXECUTE_ACTION_ERROR; return res;
} }
} }
@ -2996,7 +2997,7 @@ gst_validate_scenario_update_segment_from_seek (GstValidateScenario * scenario,
} }
} }
static gboolean static GstValidateExecuteActionReturn
gst_validate_action_default_prepare_func (GstValidateAction * action) gst_validate_action_default_prepare_func (GstValidateAction * action)
{ {
gint i; gint i;
@ -3017,17 +3018,17 @@ gst_validate_action_default_prepare_func (GstValidateAction * action)
} }
if (action->repeat > 0) if (action->repeat > 0)
return TRUE; return GST_VALIDATE_EXECUTE_ACTION_OK;
if (!gst_structure_has_field (action->structure, "repeat")) if (!gst_structure_has_field (action->structure, "repeat"))
return TRUE; return GST_VALIDATE_EXECUTE_ACTION_OK;
if (gst_structure_get_int (action->structure, "repeat", &action->repeat)) if (gst_structure_get_int (action->structure, "repeat", &action->repeat))
return TRUE; return GST_VALIDATE_EXECUTE_ACTION_OK;
if (gst_structure_get_double (action->structure, "repeat", if (gst_structure_get_double (action->structure, "repeat",
(gdouble *) & action->repeat)) (gdouble *) & action->repeat))
return TRUE; return GST_VALIDATE_EXECUTE_ACTION_OK;
repeat_expr = repeat_expr =
g_strdup (gst_structure_get_string (action->structure, "repeat")); g_strdup (gst_structure_get_string (action->structure, "repeat"));
@ -3035,7 +3036,7 @@ gst_validate_action_default_prepare_func (GstValidateAction * action)
g_error ("Invalid value for 'repeat' in %s", g_error ("Invalid value for 'repeat' in %s",
gst_structure_to_string (action->structure)); gst_structure_to_string (action->structure));
return FALSE; return GST_VALIDATE_EXECUTE_ACTION_ERROR;
} }
action->repeat = action->repeat =
@ -3045,7 +3046,7 @@ gst_validate_action_default_prepare_func (GstValidateAction * action)
g_error ("Invalid value for 'repeat' in %s: %s", g_error ("Invalid value for 'repeat' in %s: %s",
gst_structure_to_string (action->structure), error); gst_structure_to_string (action->structure), error);
return FALSE; return GST_VALIDATE_EXECUTE_ACTION_ERROR;
} }
g_free (repeat_expr); g_free (repeat_expr);
@ -3057,7 +3058,7 @@ gst_validate_action_default_prepare_func (GstValidateAction * action)
if (scenario) if (scenario)
gst_object_unref (scenario); gst_object_unref (scenario);
return TRUE; return GST_VALIDATE_EXECUTE_ACTION_OK;
} }
static void static void

View file

@ -84,7 +84,7 @@ typedef GstValidateExecuteActionReturn (*GstValidateExecuteAction) (GstValidateS
* Returns: %TRUE if the action could be prepared and is ready to be run * Returns: %TRUE if the action could be prepared and is ready to be run
* , %FALSE otherwise * , %FALSE otherwise
*/ */
typedef gboolean (*GstValidatePrepareAction) (GstValidateAction * action); typedef GstValidateExecuteActionReturn (*GstValidatePrepareAction) (GstValidateAction * action);
typedef struct _GstValidateActionPrivate GstValidateActionPrivate; typedef struct _GstValidateActionPrivate GstValidateActionPrivate;