qa-monitor: add runner property
authorThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 12 Jul 2013 03:41:43 +0000 (00:41 -0300)
committerThiago Santos <thiago.sousa.santos@collabora.com>
Fri, 12 Jul 2013 03:41:43 +0000 (00:41 -0300)
runner stores the GstQaRunner that will receive the error reports
from the monitors

12 files changed:
validate/gst/qa/gst-qa-bin-monitor.c
validate/gst/qa/gst-qa-bin-monitor.h
validate/gst/qa/gst-qa-element-monitor.c
validate/gst/qa/gst-qa-element-monitor.h
validate/gst/qa/gst-qa-monitor-factory.c
validate/gst/qa/gst-qa-monitor-factory.h
validate/gst/qa/gst-qa-monitor.c
validate/gst/qa/gst-qa-monitor.h
validate/gst/qa/gst-qa-pad-monitor.c
validate/gst/qa/gst-qa-pad-monitor.h
validate/gst/qa/gst-qa-runner.c
validate/gst/qa/gst-qa-runner.h

index 0575e48..f063f81 100644 (file)
@@ -86,10 +86,10 @@ gst_qa_bin_monitor_init (GstQaBinMonitor * bin_monitor)
  * @bin: (transfer-none): a #GstBin to run QA on
  */
 GstQaBinMonitor *
-gst_qa_bin_monitor_new (GstBin * bin)
+gst_qa_bin_monitor_new (GstBin * bin, GstQaRunner * runner)
 {
   GstQaBinMonitor *monitor = g_object_new (GST_TYPE_QA_BIN_MONITOR, "object",
-      bin, NULL);
+      bin, "qa-runner", runner, NULL);
 
   if (GST_QA_MONITOR_GET_OBJECT (monitor) == NULL) {
     g_object_unref (monitor);
@@ -152,7 +152,9 @@ gst_qa_bin_monitor_wrap_element (GstQaBinMonitor * monitor,
   GstQaElementMonitor *element_monitor;
   GST_DEBUG_OBJECT (monitor, "Wrapping element %s", GST_ELEMENT_NAME (element));
 
-  element_monitor = gst_qa_monitor_factory_create (element);
+  element_monitor =
+      gst_qa_monitor_factory_create (element,
+      GST_QA_MONITOR_GET_RUNNER (monitor));
   g_return_if_fail (element_monitor != NULL);
 
   GST_QA_MONITOR_LOCK (monitor);
index ffff8e9..633f22d 100644 (file)
@@ -25,6 +25,7 @@
 #include <glib-object.h>
 #include <gst/gst.h>
 #include "gst-qa-element-monitor.h"
+#include "gst-qa-runner.h"
 
 G_BEGIN_DECLS
 
@@ -71,7 +72,7 @@ struct _GstQaBinMonitorClass {
 /* normal GObject stuff */
 GType          gst_qa_bin_monitor_get_type             (void);
 
-GstQaBinMonitor *   gst_qa_bin_monitor_new      (GstBin * bin);
+GstQaBinMonitor *   gst_qa_bin_monitor_new      (GstBin * bin, GstQaRunner * runner);
 
 G_END_DECLS
 
index d152184..35b0f1f 100644 (file)
@@ -85,13 +85,14 @@ gst_qa_element_monitor_init (GstQaElementMonitor * element_monitor)
  * @element: (transfer-none): a #GstElement to run QA on
  */
 GstQaElementMonitor *
-gst_qa_element_monitor_new (GstElement * element)
+gst_qa_element_monitor_new (GstElement * element, GstQaRunner * runner)
 {
   GstQaElementMonitor *monitor;
 
   g_return_val_if_fail (element != NULL, NULL);
 
-  monitor = g_object_new (GST_TYPE_QA_ELEMENT_MONITOR, "object", element, NULL);
+  monitor = g_object_new (GST_TYPE_QA_ELEMENT_MONITOR, "object", element,
+      "qa-runner", runner, NULL);
 
   if (GST_QA_ELEMENT_MONITOR_GET_ELEMENT (monitor) == NULL) {
     g_object_unref (monitor);
@@ -155,7 +156,8 @@ gst_qa_element_monitor_wrap_pad (GstQaElementMonitor * monitor, GstPad * pad)
   GstQaPadMonitor *pad_monitor;
   GST_DEBUG_OBJECT (monitor, "Wrapping pad %s:%s", GST_DEBUG_PAD_NAME (pad));
 
-  pad_monitor = gst_qa_pad_monitor_new (pad);
+  pad_monitor =
+      gst_qa_pad_monitor_new (pad, GST_QA_MONITOR_GET_RUNNER (monitor));
   g_return_if_fail (pad_monitor != NULL);
 
   GST_QA_MONITOR_LOCK (monitor);
index 16a727e..4de85a7 100644 (file)
@@ -71,7 +71,7 @@ struct _GstQaElementMonitorClass {
 /* normal GObject stuff */
 GType          gst_qa_element_monitor_get_type         (void);
 
-GstQaElementMonitor *   gst_qa_element_monitor_new      (GstElement * element);
+GstQaElementMonitor *   gst_qa_element_monitor_new      (GstElement * element, GstQaRunner * runner);
 
 G_END_DECLS
 
index 388e1f4..eea9ba3 100644 (file)
 #include "gst-qa-bin-monitor.h"
 
 GstQaElementMonitor *
-gst_qa_monitor_factory_create (GstElement * element)
+gst_qa_monitor_factory_create (GstElement * element, GstQaRunner * runner)
 {
   g_return_val_if_fail (element != NULL, NULL);
 
   if (GST_IS_BIN (element)) {
     return
         GST_QA_ELEMENT_MONITOR_CAST (gst_qa_bin_monitor_new (GST_BIN_CAST
-            (element)));
+            (element), runner));
   }
 
-  return gst_qa_element_monitor_new (element);
+  return gst_qa_element_monitor_new (element, runner);
 }
index 121c6fb..fe7ebcb 100644 (file)
 #include <glib-object.h>
 #include <gst/gst.h>
 #include "gst-qa-element-monitor.h"
+#include "gst-qa-runner.h"
 
 G_BEGIN_DECLS
 
-GstQaElementMonitor *       gst_qa_monitor_factory_create (GstElement * element);
+GstQaElementMonitor *       gst_qa_monitor_factory_create (GstElement * element, GstQaRunner * runner);
 
 G_END_DECLS
 
index 94c8658..6b6d80a 100644 (file)
@@ -32,6 +32,7 @@ enum
 {
   PROP_0,
   PROP_OBJECT,
+  PROP_RUNNER,
   PROP_LAST
 };
 
@@ -81,6 +82,10 @@ gst_qa_monitor_class_init (GstQaMonitorClass * klass)
   g_object_class_install_property (gobject_class, PROP_OBJECT,
       g_param_spec_object ("object", "Object", "The object to be monitored",
           G_TYPE_OBJECT, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+  g_object_class_install_property (gobject_class, PROP_RUNNER,
+      g_param_spec_object ("qa-runner", "QA Runner", "The QA runner to "
+          "report errors to", GST_TYPE_QA_RUNNER, G_PARAM_READWRITE));
 }
 
 static void
@@ -118,6 +123,7 @@ gst_qa_monitor_do_setup (GstQaMonitor * monitor)
 gboolean
 gst_qa_monitor_setup (GstQaMonitor * monitor)
 {
+  GST_DEBUG_OBJECT (monitor, "Starting monitor setup");
   return GST_QA_MONITOR_GET_CLASS (monitor)->setup (monitor);
 }
 
@@ -135,6 +141,11 @@ gst_qa_monitor_set_property (GObject * object, guint prop_id,
       monitor->object = g_value_dup_object (value);
       gst_qa_monitor_setup (monitor);
       break;
+    case PROP_RUNNER:
+      /* we assume the runner is valid as long as this monitor is,
+       * no ref taken */
+      monitor->runner = g_value_get_object (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -153,6 +164,12 @@ gst_qa_monitor_get_property (GObject * object, guint prop_id,
     case PROP_OBJECT:
       g_value_set_object (value, GST_QA_MONITOR_GET_OBJECT (monitor));
       break;
+    case PROP_RUNNER:
+      if (GST_QA_MONITOR_GET_RUNNER (monitor))
+        g_value_set_object (value, GST_QA_MONITOR_GET_RUNNER (monitor));
+      else
+        g_value_set_object (value, NULL);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
index 4c70e98..4913644 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <glib-object.h>
 #include <gst/gst.h>
+#include "gst-qa-runner.h"
 
 G_BEGIN_DECLS
 
@@ -37,6 +38,7 @@ G_BEGIN_DECLS
 #define GST_QA_MONITOR_CLASS_CAST(klass)        ((GstQaMonitorClass*)(klass))
 
 #define GST_QA_MONITOR_GET_OBJECT(m) (GST_QA_MONITOR_CAST (m)->object)
+#define GST_QA_MONITOR_GET_RUNNER(m) (GST_QA_MONITOR_CAST (m)->runner)
 #define GST_QA_MONITOR_LOCK(m) (g_mutex_lock (&GST_QA_MONITOR_CAST(m)->mutex))
 #define GST_QA_MONITOR_UNLOCK(m) (g_mutex_unlock (&GST_QA_MONITOR_CAST(m)->mutex))
 
@@ -56,6 +58,8 @@ struct _GstQaMonitor {
   GObject       *object;
   GMutex         mutex;
 
+  GstQaRunner   *runner;
+
   /*< private >*/
 };
 
index 9c9ce01..8545d49 100644 (file)
@@ -70,10 +70,10 @@ gst_qa_pad_monitor_init (GstQaPadMonitor * pad_monitor)
  * @pad: (transfer-none): a #GstPad to run QA on
  */
 GstQaPadMonitor *
-gst_qa_pad_monitor_new (GstPad * pad)
+gst_qa_pad_monitor_new (GstPad * pad, GstQaRunner * runner)
 {
   GstQaPadMonitor *monitor = g_object_new (GST_TYPE_QA_PAD_MONITOR,
-      "object", pad, NULL);
+      "object", pad, "qa-runner", runner, NULL);
 
   if (GST_QA_PAD_MONITOR_GET_PAD (monitor) == NULL) {
     g_object_unref (monitor);
index 2d8b00e..7a734cd 100644 (file)
@@ -85,7 +85,7 @@ struct _GstQaPadMonitorClass {
 /* normal GObject stuff */
 GType          gst_qa_pad_monitor_get_type             (void);
 
-GstQaPadMonitor *   gst_qa_pad_monitor_new      (GstPad * pad);
+GstQaPadMonitor *   gst_qa_pad_monitor_new      (GstPad * pad, GstQaRunner * runner);
 
 G_END_DECLS
 
index 0889429..b5d6fef 100644 (file)
@@ -88,7 +88,7 @@ gst_qa_runner_setup (GstQaRunner * runner)
     return TRUE;
 
   GST_INFO_OBJECT (runner, "Starting QA Runner setup");
-  runner->monitor = gst_qa_monitor_factory_create (runner->pipeline);
+  runner->monitor = gst_qa_monitor_factory_create (runner->pipeline, runner);
   if (runner->monitor == NULL) {
     GST_WARNING_OBJECT (runner, "Setup failed");
     return FALSE;
index 87b877a..4ee752b 100644 (file)
 #include <glib-object.h>
 #include <gst/gst.h>
 
-#include "gst-qa-element-monitor.h"
-
 G_BEGIN_DECLS
 
+/* forward declaration */
+typedef struct _GstQaElementMonitor GstQaElementMonitor;
+
 #define GST_TYPE_QA_RUNNER                     (gst_qa_runner_get_type ())
 #define GST_IS_QA_RUNNER(obj)                  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_QA_RUNNER))
 #define GST_IS_QA_RUNNER_CLASS(klass)          (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_QA_RUNNER))