validate: Always print trace for critical issues
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Wed, 21 Sep 2016 17:07:29 +0000 (14:07 -0300)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Mon, 26 Sep 2016 16:36:48 +0000 (13:36 -0300)
And take into account issue details level to generate backtrace.

validate/gst/validate/gst-validate-report.c
validate/gst/validate/gst-validate-runner.c

index f01a0d7..8316e59 100644 (file)
@@ -798,7 +798,9 @@ gst_validate_report_new (GstValidateIssue * issue,
     GstValidateReporter * reporter, const gchar * message)
 {
   GstValidateReport *report = g_slice_new0 (GstValidateReport);
-  GstValidateReportingDetails reporter_level;
+  GstValidateReportingDetails reporter_details, default_details,
+      issue_type_details;
+  GstValidateRunner *runner = gst_validate_reporter_get_runner (reporter);
 
   gst_mini_object_init (((GstMiniObject *) report), 0,
       _gst_validate_report_type, NULL, NULL,
@@ -820,13 +822,18 @@ gst_validate_report_new (GstValidateIssue * issue,
   report->level = issue->default_level;
   report->reporting_level = GST_VALIDATE_SHOW_UNKNOWN;
 
-  reporter_level = gst_validate_reporter_get_reporting_level (reporter);
-  if (reporter_level == GST_VALIDATE_SHOW_ALL ||
-      (reporter_level == GST_VALIDATE_SHOW_UNKNOWN
-          &&
-          gst_validate_runner_get_default_reporting_details
-          (gst_validate_reporter_get_runner (reporter)) ==
-          GST_VALIDATE_SHOW_ALL))
+  reporter_details = gst_validate_reporter_get_reporting_level (reporter);
+  issue_type_details = gst_validate_runner_get_reporting_level_for_name (runner,
+      g_quark_to_string (issue->issue_id));
+  default_details = gst_validate_runner_get_default_reporting_details (runner);
+  if (reporter_details != GST_VALIDATE_SHOW_ALL &&
+      reporter_details != GST_VALIDATE_SHOW_UNKNOWN)
+    return report;
+
+  if (default_details == GST_VALIDATE_SHOW_ALL ||
+      issue_type_details == GST_VALIDATE_SHOW_ALL ||
+      gst_validate_report_check_abort (report) ||
+      report->level == GST_VALIDATE_REPORT_LEVEL_CRITICAL)
     report->trace = generate_trace ();
 
   return report;
index 9474ee5..0934ab6 100644 (file)
@@ -564,13 +564,16 @@ gst_validate_runner_add_report (GstValidateRunner * runner,
         return;
       case GST_VALIDATE_SHOW_SMART:
         if (!gst_validate_report_check_abort (report) &&
-            report->level != GST_VALIDATE_REPORT_LEVEL_CRITICAL) {
+            report->level != GST_VALIDATE_REPORT_LEVEL_CRITICAL &&
+            !report->trace) {
           synthesize_reports (runner, report);
           return;
         }
       case GST_VALIDATE_SHOW_SYNTHETIC:
-        synthesize_reports (runner, report);
-        return;
+        if (!report->trace) {
+          synthesize_reports (runner, report);
+          return;
+        }
       default:
         break;
     }