diff --git a/validate/gst/qa/gst-qa-bin-monitor.c b/validate/gst/qa/gst-qa-bin-monitor.c index b44b28ecb1..ce6649a2b8 100644 --- a/validate/gst/qa/gst-qa-bin-monitor.c +++ b/validate/gst/qa/gst-qa-bin-monitor.c @@ -56,6 +56,9 @@ gst_qa_bin_monitor_dispose (GObject * object) if (bin && monitor->element_added_id) g_signal_handler_disconnect (bin, monitor->element_added_id); + if (monitor->scenario) + g_object_unref (monitor->scenario); + g_list_free_full (monitor->element_monitors, g_object_unref); G_OBJECT_CLASS (parent_class)->dispose (object); @@ -81,6 +84,22 @@ gst_qa_bin_monitor_init (GstQaBinMonitor * bin_monitor) { } +static void +gst_qa_bin_monitor_create_scenarios (GstQaBinMonitor * monitor) +{ + /* scenarios currently only make sense for pipelines */ + if (GST_IS_PIPELINE (GST_QA_MONITOR_GET_OBJECT (monitor))) { + const gchar *scenario_name; + + if ((scenario_name = g_getenv ("GST_QA_SCENARIO"))) { + monitor->scenario = + gst_qa_scenario_factory_create (GST_QA_MONITOR_GET_RUNNER (monitor), + GST_ELEMENT_CAST (GST_QA_MONITOR_GET_OBJECT (monitor)), + scenario_name); + } + } +} + /** * gst_qa_bin_monitor_new: * @bin: (transfer-none): a #GstBin to run QA on @@ -96,6 +115,9 @@ gst_qa_bin_monitor_new (GstBin * bin, GstQaRunner * runner, g_object_unref (monitor); return NULL; } + + gst_qa_bin_monitor_create_scenarios (monitor); + return monitor; } diff --git a/validate/gst/qa/gst-qa-bin-monitor.h b/validate/gst/qa/gst-qa-bin-monitor.h index 955ec2ed70..684d904d98 100644 --- a/validate/gst/qa/gst-qa-bin-monitor.h +++ b/validate/gst/qa/gst-qa-bin-monitor.h @@ -26,6 +26,7 @@ #include #include "gst-qa-element-monitor.h" #include "gst-qa-runner.h" +#include "gst-qa-scenario.h" G_BEGIN_DECLS @@ -55,6 +56,8 @@ struct _GstQaBinMonitor { GList *element_monitors; + GstQaScenario *scenario; + /*< private >*/ gulong element_added_id; }; diff --git a/validate/gst/qa/gst-qa-runner.c b/validate/gst/qa/gst-qa-runner.c index 6ef4aa4e50..445e1d13db 100644 --- a/validate/gst/qa/gst-qa-runner.c +++ b/validate/gst/qa/gst-qa-runner.c @@ -23,7 +23,6 @@ #include "gst-qa-report.h" #include "gst-qa-monitor-factory.h" #include "gst-qa-override-registry.h" -#include "gst-qa-scenario.h" /** * SECTION:gst-qa-runner @@ -57,9 +56,6 @@ gst_qa_runner_dispose (GObject * object) g_slist_free_full (runner->reports, (GDestroyNotify) gst_qa_report_unref); - if (runner->scenario) - g_object_unref (runner->scenario); - G_OBJECT_CLASS (parent_class)->dispose (object); } diff --git a/validate/gst/qa/gst-qa-runner.h b/validate/gst/qa/gst-qa-runner.h index 14f11c62cd..454535c33a 100644 --- a/validate/gst/qa/gst-qa-runner.h +++ b/validate/gst/qa/gst-qa-runner.h @@ -58,8 +58,6 @@ struct _GstQaRunner { gboolean setup; /*< private >*/ - GstQaScenario *scenario; - GSList *reports; };