validate-monitor: Determine the reporting level at setup.
authorMathieu Duponchelle <mathieu.duponchelle@collabora.com>
Thu, 9 Oct 2014 23:17:43 +0000 (01:17 +0200)
committerMathieu Duponchelle <mathieu.duponchelle@opencreed.com>
Tue, 21 Oct 2014 18:13:51 +0000 (20:13 +0200)
validate/gst/validate/gst-validate-monitor.c
validate/gst/validate/gst-validate-monitor.h

index 9873518..9c9bf27 100644 (file)
@@ -188,10 +188,38 @@ gst_validate_monitor_do_setup (GstValidateMonitor * monitor)
   return TRUE;
 }
 
+static void
+_determine_reporting_level (GstValidateMonitor *monitor)
+{
+  GstValidateRunner *runner;
+  GstObject *object, *parent;
+  const gchar *object_name;
+  GstValidateReportingLevel level = GST_VALIDATE_REPORTING_LEVEL_UNKNOWN;
+
+  object = gst_object_ref(monitor->target);
+  runner = gst_validate_reporter_get_runner (GST_VALIDATE_REPORTER (monitor));
+
+  do {
+    object_name = gst_object_get_name (object);
+    level = gst_validate_runner_get_reporting_level_for_name (runner, object_name);
+    parent = gst_object_get_parent (object);
+    gst_object_unref (object);
+    object = parent;
+  } while (object && level == GST_VALIDATE_REPORTING_LEVEL_UNKNOWN);
+
+  if (object)
+    gst_object_unref (object);
+
+  monitor->level = level;
+}
+
 gboolean
 gst_validate_monitor_setup (GstValidateMonitor * monitor)
 {
   GST_DEBUG_OBJECT (monitor, "Starting monitor setup");
+
+  /* For now we just need to do this at setup time */
+  _determine_reporting_level (monitor);
   return GST_VALIDATE_MONITOR_GET_CLASS (monitor)->setup (monitor);
 }
 
index 31b44b2..eb0e67f 100644 (file)
@@ -91,6 +91,8 @@ struct _GstValidateMonitor {
   GMutex        overrides_mutex;
   GQueue        overrides;
 
+  GstValidateReportingLevel level;
+
   /*< private >*/
   GHashTable *reports;
 };