From: Thibault Saunier Date: Tue, 3 Mar 2015 14:42:06 +0000 (+0100) Subject: validate:scenario: Update Action.repeat field when needed X-Git-Tag: 1.19.3~491^2~1298 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0159c96ab0e83f4e0ad242e4178bbb3c76afef93;p=platform%2Fupstream%2Fgstreamer.git validate:scenario: Update Action.repeat field when needed Summary: And print the current repeat value of the action that have such a field Reviewers: Mathieu_Du Differential Revision: http://phabricator.freedesktop.org/D73 --- diff --git a/validate/gst/validate/gst-validate-internal.h b/validate/gst/validate/gst-validate-internal.h index 5cac150..57f73b9 100644 --- a/validate/gst/validate/gst-validate-internal.h +++ b/validate/gst/validate/gst-validate-internal.h @@ -41,6 +41,7 @@ void init_scenarios (void); /* 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 diff --git a/validate/gst/validate/gst-validate-report.c b/validate/gst/validate/gst-validate-report.c index 8862292..c1888df 100644 --- a/validate/gst/validate/gst-validate-report.c +++ b/validate/gst/validate/gst-validate-report.c @@ -579,7 +579,18 @@ gst_validate_print_action (GstValidateAction * action, const gchar * message) 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, diff --git a/validate/gst/validate/gst-validate-scenario.c b/validate/gst/validate/gst-validate-scenario.c index d781242..896c886 100644 --- a/validate/gst/validate/gst-validate-scenario.c +++ b/validate/gst/validate/gst-validate-scenario.c @@ -268,6 +268,13 @@ _action_check_and_set_printed (GstValidateAction * action) 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); @@ -1316,14 +1323,17 @@ execute_next_action (GstValidateScenario * scenario) 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);