validate: Add a way to avoid printing all the issue in reports

Avoiding user to be flooded by information he does not want while
debugging
This commit is contained in:
Thibault Saunier 2014-07-26 11:41:09 +02:00
parent d682bd29a9
commit 8518e08dbb
4 changed files with 38 additions and 4 deletions

View file

@ -252,7 +252,10 @@ gst_validate_report_init (void)
const GDebugKey keys[] = { const GDebugKey keys[] = {
{"fatal_criticals", GST_VALIDATE_FATAL_CRITICALS}, {"fatal_criticals", GST_VALIDATE_FATAL_CRITICALS},
{"fatal_warnings", GST_VALIDATE_FATAL_WARNINGS}, {"fatal_warnings", GST_VALIDATE_FATAL_WARNINGS},
{"fatal_issues", GST_VALIDATE_FATAL_ISSUES} {"fatal_issues", GST_VALIDATE_FATAL_ISSUES},
{"print_issues", GST_VALIDATE_PRINT_ISSUES},
{"print_warnings", GST_VALIDATE_PRINT_WARNINGS},
{"print_criticals", GST_VALIDATE_PRINT_CRITICALS}
}; };
GST_DEBUG_CATEGORY_INIT (gst_validate_report_debug, "gstvalidatereport", GST_DEBUG_CATEGORY_INIT (gst_validate_report_debug, "gstvalidatereport",
@ -264,7 +267,8 @@ gst_validate_report_init (void)
/* init the debug flags */ /* init the debug flags */
var = g_getenv ("GST_VALIDATE"); var = g_getenv ("GST_VALIDATE");
if (var && strlen (var) > 0) { if (var && strlen (var) > 0) {
_gst_validate_flags = g_parse_debug_string (var, keys, 3); _gst_validate_flags =
g_parse_debug_string (var, keys, G_N_ELEMENTS (keys));
} }
gst_validate_report_load_issues (); gst_validate_report_load_issues ();
@ -341,6 +345,28 @@ gst_validate_report_area_get_name (GstValidateReportArea area)
} }
} }
gboolean
gst_validate_report_should_print (GstValidateReport * report)
{
if ((!(_gst_validate_flags & GST_VALIDATE_PRINT_ISSUES) &&
!(_gst_validate_flags & GST_VALIDATE_PRINT_WARNINGS) &&
!(_gst_validate_flags & GST_VALIDATE_PRINT_CRITICALS))) {
return TRUE;
}
if ((report->level <= GST_VALIDATE_REPORT_LEVEL_ISSUE &&
_gst_validate_flags & GST_VALIDATE_PRINT_ISSUES) ||
(report->level <= GST_VALIDATE_REPORT_LEVEL_WARNING &&
_gst_validate_flags & GST_VALIDATE_PRINT_WARNINGS) ||
(report->level <= GST_VALIDATE_REPORT_LEVEL_CRITICAL &&
_gst_validate_flags & GST_VALIDATE_PRINT_CRITICALS)) {
return TRUE;
}
return FALSE;
}
gboolean gboolean
gst_validate_report_check_abort (GstValidateReport * report) gst_validate_report_check_abort (GstValidateReport * report)
{ {

View file

@ -39,7 +39,10 @@ typedef enum {
GST_VALIDATE_FATAL_DEFAULT = 0, GST_VALIDATE_FATAL_DEFAULT = 0,
GST_VALIDATE_FATAL_ISSUES = 1 << 0, GST_VALIDATE_FATAL_ISSUES = 1 << 0,
GST_VALIDATE_FATAL_WARNINGS = 1 << 1, GST_VALIDATE_FATAL_WARNINGS = 1 << 1,
GST_VALIDATE_FATAL_CRITICALS = 1 << 2 GST_VALIDATE_FATAL_CRITICALS = 1 << 2,
GST_VALIDATE_PRINT_ISSUES = 1 << 3,
GST_VALIDATE_PRINT_WARNINGS = 1 << 4,
GST_VALIDATE_PRINT_CRITICALS = 1 << 5
} GstValidateDebugFlags; } GstValidateDebugFlags;
typedef enum { typedef enum {
@ -208,6 +211,7 @@ void gst_validate_printf (gpointer source,
void gst_validate_printf_valist (gpointer source, void gst_validate_printf_valist (gpointer source,
const gchar * format, const gchar * format,
va_list args) G_GNUC_NO_INSTRUMENT; va_list args) G_GNUC_NO_INSTRUMENT;
gboolean gst_validate_report_should_print (GstValidateReport * report);
G_END_DECLS G_END_DECLS

View file

@ -81,6 +81,7 @@ static void
gst_validate_runner_init (GstValidateRunner * runner) gst_validate_runner_init (GstValidateRunner * runner)
{ {
runner->setup = FALSE; runner->setup = FALSE;
runner->max_printed_level = GST_VALIDATE_REPORT_LEVEL_NUM_ENTRIES;
} }
/** /**
@ -127,7 +128,9 @@ gst_validate_runner_printf (GstValidateRunner * runner)
for (tmp = gst_validate_runner_get_reports (runner); tmp; tmp = tmp->next) { for (tmp = gst_validate_runner_get_reports (runner); tmp; tmp = tmp->next) {
GstValidateReport *report = tmp->data; GstValidateReport *report = tmp->data;
gst_validate_report_printf (report); if (gst_validate_report_should_print (report))
gst_validate_report_printf (report);
if (ret == 0 && report->level == GST_VALIDATE_REPORT_LEVEL_CRITICAL) { if (ret == 0 && report->level == GST_VALIDATE_REPORT_LEVEL_CRITICAL) {
criticals = g_list_append (criticals, tmp->data); criticals = g_list_append (criticals, tmp->data);
ret = 18; ret = 18;

View file

@ -53,6 +53,7 @@ struct _GstValidateRunner {
GObject object; GObject object;
gboolean setup; gboolean setup;
guint max_printed_level;
/*< private >*/ /*< private >*/
GSList *reports; GSList *reports;