/* FIXME 2.0 Remove that as this is only for backward compatibility
* as we used to have to print actions in the action execution function
* and this is done by the scenario itself now */
-gboolean _action_check_and_set_printed (GstValidateAction *action);
+GST_EXPORT gboolean _action_check_and_set_printed (GstValidateAction *action);
+GST_EXPORT gboolean gst_validate_action_is_subaction (GstValidateAction *action);
#endif
GString *string = NULL;
if (message == NULL) {
- string = g_string_new (gst_structure_get_name (action->structure));
+ gint nrepeats;
+
+ string = g_string_new (NULL);
+
+ if (gst_validate_action_is_subaction (action))
+ g_string_append_printf (string, "(subaction)");
+
+ if (gst_structure_get_int (action->structure, "repeat", &nrepeats))
+ g_string_append_printf (string, "(%d/%d)", action->repeat, nrepeats);
+
+ g_string_append_printf (string, " %s",
+ gst_structure_get_name (action->structure));
g_string_append_len (string, ": ", 2);
gst_structure_foreach (action->structure,
return TRUE;
}
+gboolean
+gst_validate_action_is_subaction (GstValidateAction * action)
+{
+ return !gst_structure_is_equal (action->structure,
+ action->priv->main_structure);
+}
+
/* GstValidateActionType implementation */
GType _gst_validate_action_type_type;
GST_DEFINE_MINI_OBJECT_TYPE (GstValidateActionType, gst_validate_action_type);
SCENARIO_ACTION_EXECUTION_ERROR, "Could not execute %s", str);
g_free (str);
- } else if (act->priv->state == GST_VALIDATE_EXECUTE_ACTION_OK) {
- act->priv->state = _execute_sub_action_action (act);
}
- if (act->repeat > 0 && gst_structure_is_equal (act->structure,
- act->priv->main_structure)) {
+ if (act->repeat > 0 && !gst_validate_action_is_subaction (act)) {
act->repeat--;
- } else if (act->priv->state != GST_VALIDATE_EXECUTE_ACTION_ASYNC) {
+ }
+
+ if (act->priv->state == GST_VALIDATE_EXECUTE_ACTION_OK) {
+ act->priv->state = _execute_sub_action_action (act);
+ }
+
+ if (act->priv->state != GST_VALIDATE_EXECUTE_ACTION_ASYNC) {
tmp = priv->actions;
priv->actions = g_list_remove_link (priv->actions, tmp);