summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h2
-rw-r--r--src/plugins/android/videonode/android_videonode.json2
-rw-r--r--src/plugins/videonode/egl/egl.json2
-rw-r--r--src/plugins/videonode/imx6/imx6.json2
-rw-r--r--src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp23
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;
+ }
}
}
}