diff options
author | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2012-02-13 14:30:49 +0000 |
---|---|---|
committer | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2012-02-13 15:42:20 +0000 |
commit | e9dce3dae8f08598c53bbc57a1cd70c955ff0115 (patch) | |
tree | f71ea537570b79f99515f19c0be6dac9e47daaad /tests | |
parent | 834aaaacc4aa764743967c131c7ed3263f8d312f (diff) |
Fix tst_QGraphicsVideoItem_symbian
On versions of the platform which lack the EGL_NOK_image_endpoint2
extension, video rendering is always done via the 'direct' path
(i.e. QVideoWidgetControl, rather than QVideoRendererControl). This
patch adds a runtime check for the presence of that extension, and
adjusts the expected rendering path used in subsequent checks.
Reviewed-by: mread
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qgraphicsvideoitem_symbian/qgraphicsvideoitem_symbian.pro | 5 | ||||
-rw-r--r-- | tests/auto/qgraphicsvideoitem_symbian/tst_qgraphicsvideoitem_symbian.cpp | 54 |
2 files changed, 47 insertions, 12 deletions
diff --git a/tests/auto/qgraphicsvideoitem_symbian/qgraphicsvideoitem_symbian.pro b/tests/auto/qgraphicsvideoitem_symbian/qgraphicsvideoitem_symbian.pro index 217fded1cc..04d1ba072d 100644 --- a/tests/auto/qgraphicsvideoitem_symbian/qgraphicsvideoitem_symbian.pro +++ b/tests/auto/qgraphicsvideoitem_symbian/qgraphicsvideoitem_symbian.pro @@ -5,5 +5,10 @@ MOBILITY = multimedia INCLUDEPATH += ../../../src/multimedia SOURCES += tst_qgraphicsvideoitem_symbian.cpp LIBS += -lcone -lavkon +contains(QT_CONFIG, egl) { + LIBS *= -llibegl +} else { + DEFINES += QT_NO_EGL +} include (../../../common.pri) diff --git a/tests/auto/qgraphicsvideoitem_symbian/tst_qgraphicsvideoitem_symbian.cpp b/tests/auto/qgraphicsvideoitem_symbian/tst_qgraphicsvideoitem_symbian.cpp index 8ba74ab796..d9f592a9e3 100644 --- a/tests/auto/qgraphicsvideoitem_symbian/tst_qgraphicsvideoitem_symbian.cpp +++ b/tests/auto/qgraphicsvideoitem_symbian/tst_qgraphicsvideoitem_symbian.cpp @@ -55,6 +55,10 @@ #include <aknenv.h> #include <aknappui.h> +#ifndef QT_NO_EGL +#include <egl/egl.h> +#endif + QT_USE_NAMESPACE static const QString FileName = "e:/test.mp4"; @@ -69,7 +73,15 @@ enum PreferredRenderingPath PreferredRenderingPathDirect }; +enum ActualRenderingPath +{ + ActualRenderingPathNone, + ActualRenderingPathRenderer = PreferredRenderingPathRenderer, + ActualRenderingPathDirect = PreferredRenderingPathDirect +}; + Q_DECLARE_METATYPE(PreferredRenderingPath) +Q_DECLARE_METATYPE(ActualRenderingPath) #define WAIT_FOR_CONDITION(condition, ms) \ { \ @@ -104,12 +116,6 @@ private: void setPreferredRenderingPath(PreferredRenderingPath path); void setFullScreen(bool enabled); - enum ActualRenderingPath - { - ActualRenderingPathNone, - ActualRenderingPathRenderer = PreferredRenderingPathRenderer, - ActualRenderingPathDirect = PreferredRenderingPathDirect - }; ActualRenderingPath actualRenderingPath() const; private slots: @@ -123,6 +129,7 @@ private: QtTestGraphicsView *m_view; QGraphicsScene *m_scene; QtTestGraphicsVideoItem *m_videoItem; + bool m_eglEndpointSupport; }; class QtTestGraphicsView : public QGraphicsView @@ -198,7 +205,16 @@ void tst_QGraphicsVideoItemSymbian::initTestCase() m_view = 0; m_scene = 0; m_videoItem = 0; + m_eglEndpointSupport = false; +#ifndef QT_NO_EGL + const EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (display != EGL_NO_DISPLAY) { + if (eglInitialize(display, 0, 0) == EGL_TRUE) + m_eglEndpointSupport = (eglGetProcAddress("eglCreateEndpointNOK") != 0); + } +#endif qRegisterMetaType<PreferredRenderingPath>(); + qRegisterMetaType<ActualRenderingPath>(); } void tst_QGraphicsVideoItemSymbian::init() @@ -284,7 +300,7 @@ void tst_QGraphicsVideoItemSymbian::setFullScreen(bool enabled) m_videoItem->setAspectRatioMode(mode); } -tst_QGraphicsVideoItemSymbian::ActualRenderingPath tst_QGraphicsVideoItemSymbian::actualRenderingPath() const +ActualRenderingPath tst_QGraphicsVideoItemSymbian::actualRenderingPath() const { ActualRenderingPath path = ActualRenderingPathNone; static const QString property = "_q_currentVideoRenderingPath"; @@ -320,23 +336,34 @@ void tst_QGraphicsVideoItemSymbian::resetInactivityTime() void tst_QGraphicsVideoItemSymbian::specifyPreferredRenderingPath() { QFETCH(PreferredRenderingPath, preferredRenderingPath); + QFETCH(ActualRenderingPath, actualRenderingPath); setPreferredRenderingPath(preferredRenderingPath); play(); - QVERIFY(actualRenderingPath() == preferredRenderingPath); + QVERIFY(this->actualRenderingPath() == actualRenderingPath); } void tst_QGraphicsVideoItemSymbian::specifyPreferredRenderingPath_data() { QTest::addColumn<PreferredRenderingPath>("preferredRenderingPath"); - QTest::newRow("direct") << PreferredRenderingPathDirect; - QTest::newRow("renderer") << PreferredRenderingPathRenderer; + QTest::addColumn<ActualRenderingPath>("actualRenderingPath"); + QTest::newRow("direct") << PreferredRenderingPathDirect + << ActualRenderingPathDirect; + if (m_eglEndpointSupport) + QTest::newRow("renderer") << PreferredRenderingPathRenderer + << ActualRenderingPathRenderer; + else + QTest::newRow("renderer") << PreferredRenderingPathRenderer + << ActualRenderingPathDirect; } void tst_QGraphicsVideoItemSymbian::autoFullScreenIn() { setPreferredRenderingPath(PreferredRenderingPathAuto); play(); - QVERIFY(actualRenderingPath() == ActualRenderingPathRenderer); + if (m_eglEndpointSupport) + QVERIFY(actualRenderingPath() == ActualRenderingPathRenderer); + else + QVERIFY(actualRenderingPath() == ActualRenderingPathDirect); m_videoItem->savePaintCount(); setFullScreen(true); m_videoItem->waitForPaint(); @@ -353,7 +380,10 @@ void tst_QGraphicsVideoItemSymbian::autoFullScreenOut() m_videoItem->savePaintCount(); setFullScreen(false); m_videoItem->waitForPaint(); - QVERIFY(actualRenderingPath() == ActualRenderingPathRenderer); + if (m_eglEndpointSupport) + QVERIFY(actualRenderingPath() == ActualRenderingPathRenderer); + else + QVERIFY(actualRenderingPath() == ActualRenderingPathDirect); } QTEST_MAIN(tst_QGraphicsVideoItemSymbian) |