diff options
5 files changed, 22 insertions, 9 deletions
diff --git a/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h b/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h index c064f8ed8..8be77ff07 100644 --- a/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h +++ b/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h @@ -43,8 +43,6 @@ QT_BEGIN_NAMESPACE -const QLatin1String QSGVideoNodeFactoryPluginKey("sgvideonodes"); - class Q_MULTIMEDIAQUICK_EXPORT QSGVideoNode : public QSGGeometryNode { public: diff --git a/src/plugins/android/videonode/android_videonode.json b/src/plugins/android/videonode/android_videonode.json index 08bb12c3f..9b359ebac 100644 --- a/src/plugins/android/videonode/android_videonode.json +++ b/src/plugins/android/videonode/android_videonode.json @@ -1,3 +1,3 @@ { - "Keys": ["sgvideonodes"] + "Keys": ["android"] } diff --git a/src/plugins/videonode/egl/egl.json b/src/plugins/videonode/egl/egl.json index 08bb12c3f..54a0519f5 100644 --- a/src/plugins/videonode/egl/egl.json +++ b/src/plugins/videonode/egl/egl.json @@ -1,3 +1,3 @@ { - "Keys": ["sgvideonodes"] + "Keys": ["egl"] } diff --git a/src/plugins/videonode/imx6/imx6.json b/src/plugins/videonode/imx6/imx6.json index 08bb12c3f..2a7fc50cc 100644 --- a/src/plugins/videonode/imx6/imx6.json +++ b/src/plugins/videonode/imx6/imx6.json @@ -1,3 +1,3 @@ { - "Keys": ["sgvideonodes"] + "Keys": ["imx6"] } diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp index 3b07e28c2..608aae5d1 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp @@ -55,10 +55,21 @@ QDeclarativeVideoRendererBackend::QDeclarativeVideoRendererBackend(QDeclarativeV QObject::connect(m_surface, SIGNAL(surfaceFormatChanged(QVideoSurfaceFormat)), q, SLOT(_q_updateNativeSize()), Qt::QueuedConnection); - foreach (QObject *instance, videoNodeFactoryLoader()->instances(QSGVideoNodeFactoryPluginKey)) { + // Prioritize the plugin requested by the environment + QString requestedVideoNode = QString::fromLatin1(qgetenv("QT_VIDEONODE")); + + foreach (const QString &key, videoNodeFactoryLoader()->keys()) { + QObject *instance = videoNodeFactoryLoader()->instance(key); QSGVideoNodeFactoryInterface* plugin = qobject_cast<QSGVideoNodeFactoryInterface*>(instance); - if (plugin) - m_videoNodeFactories.append(plugin); + if (plugin) { + if (key == requestedVideoNode) + m_videoNodeFactories.prepend(plugin); + else + m_videoNodeFactories.append(plugin); +#ifdef DEBUG_VIDEOITEM + qDebug() << "found videonode plugin" << key << plugin; +#endif + } } // Append existing node factories as fallback if we have no plugins @@ -224,8 +235,12 @@ QSGNode *QDeclarativeVideoRendererBackend::updatePaintNode(QSGNode *oldNode, if (!videoNode) { foreach (QSGVideoNodeFactoryInterface* factory, m_videoNodeFactories) { videoNode = factory->createNode(m_surface->surfaceFormat()); - if (videoNode) + if (videoNode) { +#ifdef DEBUG_VIDEOITEM + qDebug() << "using video node from factory" << factory; +#endif break; + } } } } |