diff --git a/src/MediaFX/encoder.qml b/src/MediaFX/encoder.qml index 319778f..c4b2202 100644 --- a/src/MediaFX/encoder.qml +++ b/src/MediaFX/encoder.qml @@ -18,8 +18,13 @@ RenderWindow { } Loader { + id: loader source: RenderSession.sourceUrl anchors.fill: parent + Component.onCompleted: { + if (loader.status == Loader.Error) + RenderSession.fatalError(); + } } Encoder { diff --git a/src/MediaFX/main.cpp b/src/MediaFX/main.cpp index 0991c5c..1d22c74 100644 --- a/src/MediaFX/main.cpp +++ b/src/MediaFX/main.cpp @@ -102,14 +102,15 @@ int encoder(QGuiApplication& app, QCommandLineParser& parser) if (output == u"-"_s) output = u"pipe:"_s; - // XXX connect to engine warnings and exit if parser.isSet(u"exitOnWarning"_s) flag set QQmlApplicationEngine engine; MediaContext mediaContext(url, output, frameSize, frameRate, sampleRate); RenderSession* renderSession = engine.singletonInstance("MediaFX", "RenderSession"); Q_ASSERT(renderSession); renderSession->initialize(mediaContext); - // XXX If an error occurs, the objectCreated signal is emitted with a null pointer as parameter and error messages are printed with qWarning. + if (parser.isSet(u"exitOnWarning"_s)) { + QObject::connect(&engine, &QQmlApplicationEngine::objectCreationFailed, renderSession, &RenderSession::fatalError, Qt::QueuedConnection); + } engine.load(QUrl(u"qrc:/qt/qml/MediaFX/encoder.qml"_s)); return app.exec();