Don't request renderer control if null surface is set as video output.
QCamera and QMediaPlayer are likely to wait for valid surface to be passed to the renderer control before startup, so after player->setVideoOutput(nullSurface) player will not start playback. If the renderer control was already requested before for valid surface it should be released when the null surface is assigned. Change-Id: I3f78f2d82e61fae5f305874874c0ffbc4cb7dc1d Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
10b0063401
commit
e2eaa283fb
@@ -1031,20 +1031,30 @@ void tst_QCamera::testSetVideoOutput()
|
||||
|
||||
camera.setViewfinder(reinterpret_cast<QGraphicsVideoItem *>(0));
|
||||
|
||||
QCOMPARE(mockCameraService->rendererRef, 0);
|
||||
|
||||
camera.setViewfinder(&surface);
|
||||
QVERIFY(mockCameraService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockCameraService->rendererRef, 1);
|
||||
|
||||
camera.setViewfinder(reinterpret_cast<QAbstractVideoSurface *>(0));
|
||||
QVERIFY(mockCameraService->rendererControl->surface() == 0);
|
||||
|
||||
//rendererControl is released
|
||||
QCOMPARE(mockCameraService->rendererRef, 0);
|
||||
|
||||
camera.setViewfinder(&surface);
|
||||
QVERIFY(mockCameraService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockCameraService->rendererRef, 1);
|
||||
|
||||
camera.setViewfinder(reinterpret_cast<QVideoWidget *>(0));
|
||||
QVERIFY(mockCameraService->rendererControl->surface() == 0);
|
||||
//rendererControl is released
|
||||
QCOMPARE(mockCameraService->rendererRef, 0);
|
||||
|
||||
camera.setViewfinder(&surface);
|
||||
QVERIFY(mockCameraService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockCameraService->rendererRef, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -999,20 +999,30 @@ void tst_QMediaPlayer::testSetVideoOutput()
|
||||
player->setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
|
||||
player->setVideoOutput(reinterpret_cast<QGraphicsVideoItem *>(0));
|
||||
|
||||
QCOMPARE(mockService->rendererRef, 0);
|
||||
|
||||
player->setVideoOutput(&surface);
|
||||
QVERIFY(mockService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockService->rendererRef, 1);
|
||||
|
||||
player->setVideoOutput(reinterpret_cast<QAbstractVideoSurface *>(0));
|
||||
QVERIFY(mockService->rendererControl->surface() == 0);
|
||||
|
||||
//rendererControl is released
|
||||
QCOMPARE(mockService->rendererRef, 0);
|
||||
|
||||
player->setVideoOutput(&surface);
|
||||
QVERIFY(mockService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockService->rendererRef, 1);
|
||||
|
||||
player->setVideoOutput(reinterpret_cast<QVideoWidget *>(0));
|
||||
QVERIFY(mockService->rendererControl->surface() == 0);
|
||||
//rendererControl is released
|
||||
QCOMPARE(mockService->rendererRef, 0);
|
||||
|
||||
player->setVideoOutput(&surface);
|
||||
QVERIFY(mockService->rendererControl->surface() == &surface);
|
||||
QCOMPARE(mockService->rendererRef, 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user