From: Matthew Waters Date: Wed, 7 Dec 2016 11:58:29 +0000 (+1100) Subject: tests/examples/qmlsink: scope QApplication/Engine X-Git-Tag: 1.19.3~507^2~5730 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de41d74e6fc0453b5a929d269019f68812563828;p=platform%2Fupstream%2Fgstreamer.git tests/examples/qmlsink: scope QApplication/Engine So they are destroyed before gst_deinit() is run and the leaks tracer doesn't show false-positives. https://bugzilla.gnome.org/show_bug.cgi?id=775746 --- diff --git a/tests/examples/qt/qmlsink/main.cpp b/tests/examples/qt/qmlsink/main.cpp index 2317b05..a5cd560 100644 --- a/tests/examples/qt/qmlsink/main.cpp +++ b/tests/examples/qt/qmlsink/main.cpp @@ -39,40 +39,43 @@ int main(int argc, char *argv[]) { int ret; - QGuiApplication app(argc, argv); gst_init (&argc, &argv); - GstElement *pipeline = gst_pipeline_new (NULL); - GstElement *src = gst_element_factory_make ("videotestsrc", NULL); - GstElement *glupload = gst_element_factory_make ("glupload", NULL); - /* the plugin must be loaded before loading the qml file to register the - * GstGLVideoItem qml item */ - GstElement *sink = gst_element_factory_make ("qmlglsink", NULL); + { + QGuiApplication app(argc, argv); - g_assert (src && glupload && sink); + GstElement *pipeline = gst_pipeline_new (NULL); + GstElement *src = gst_element_factory_make ("videotestsrc", NULL); + GstElement *glupload = gst_element_factory_make ("glupload", NULL); + /* the plugin must be loaded before loading the qml file to register the + * GstGLVideoItem qml item */ + GstElement *sink = gst_element_factory_make ("qmlglsink", NULL); - gst_bin_add_many (GST_BIN (pipeline), src, glupload, sink, NULL); - gst_element_link_many (src, glupload, sink, NULL); + g_assert (src && glupload && sink); - QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + gst_bin_add_many (GST_BIN (pipeline), src, glupload, sink, NULL); + gst_element_link_many (src, glupload, sink, NULL); - QQuickItem *videoItem; - QQuickWindow *rootObject; + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - /* find and set the videoItem on the sink */ - rootObject = static_cast (engine.rootObjects().first()); - videoItem = rootObject->findChild ("videoItem"); - g_assert (videoItem); - g_object_set(sink, "widget", videoItem, NULL); + QQuickItem *videoItem; + QQuickWindow *rootObject; - rootObject->scheduleRenderJob (new SetPlaying (pipeline), - QQuickWindow::BeforeSynchronizingStage); + /* find and set the videoItem on the sink */ + rootObject = static_cast (engine.rootObjects().first()); + videoItem = rootObject->findChild ("videoItem"); + g_assert (videoItem); + g_object_set(sink, "widget", videoItem, NULL); - ret = app.exec(); + rootObject->scheduleRenderJob (new SetPlaying (pipeline), + QQuickWindow::BeforeSynchronizingStage); - gst_element_set_state (pipeline, GST_STATE_NULL); - gst_object_unref (pipeline); + ret = app.exec(); + + gst_element_set_state (pipeline, GST_STATE_NULL); + gst_object_unref (pipeline); + } gst_deinit ();