diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-24 19:26:11 +0200 |
---|---|---|
committer | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-29 18:29:19 +0200 |
commit | d2d645a68f7cbc36cd2d2dff3c37a1f5364d7f4d (patch) | |
tree | baf103ae5b8ca40b283860675bace0136eaf93cd /tests | |
parent | e9e79019fd015d0b4753b21cb851f7d215e0ee20 (diff) |
Support handover of QCamera and QImageCapture between session
Additionally, the patch fixes the can_add_and_remove_different_Cameras
and can_record_Camera_with_null_CameraDevice tests that did not have
activated QCamera.
Pick-to: 6.2
Change-Id: I3c5702e09face5d3ba4f7acd0e208e2c7d65c15f
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp index 61c0be23f..b466e6177 100644 --- a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp +++ b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp @@ -72,6 +72,7 @@ private slots: void can_move_AudioOutput_between_sessions_and_player(); void can_add_and_remove_Camera(); + void can_move_Camera_between_sessions(); void can_disconnect_Camera_when_recording(); void can_add_and_remove_different_Cameras(); void can_change_CameraDevice_on_attached_Camera(); @@ -87,6 +88,7 @@ private slots: void recording_stops_when_recorder_removed(); void can_add_and_remove_ImageCapture(); + void can_move_ImageCapture_between_sessions(); void capture_is_not_available_when_Camera_is_null(); void can_add_ImageCapture_and_capture_during_recording(); @@ -366,6 +368,38 @@ void tst_QMediaCaptureSession::can_add_and_remove_Camera() QVERIFY(!QTest::currentTestFailed()); } +void tst_QMediaCaptureSession::can_move_Camera_between_sessions() +{ + QMediaCaptureSession session0; + QMediaCaptureSession session1; + QSignalSpy cameraChanged0(&session0, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged1(&session1, SIGNAL(cameraChanged())); + { + QCamera camera; + { + QMediaCaptureSession session2; + QSignalSpy cameraChanged2(&session2, SIGNAL(cameraChanged())); + session2.setCamera(&camera); + QTRY_COMPARE(cameraChanged2.count(), 1); + } + QVERIFY(camera.captureSession() == nullptr); + + session0.setCamera(&camera); + QTRY_COMPARE(cameraChanged0.count(), 1); + QVERIFY(session0.camera() == &camera); + QVERIFY(camera.captureSession() == &session0); + + session1.setCamera(&camera); + QTRY_COMPARE(cameraChanged0.count(), 2); + QVERIFY(session0.camera() == nullptr); + QTRY_COMPARE(cameraChanged1.count(), 1); + QVERIFY(session1.camera() == &camera); + QVERIFY(camera.captureSession() == &session1); + } + QTRY_COMPARE(cameraChanged1.count(), 2); + QVERIFY(session1.camera() == nullptr); +} + void tst_QMediaCaptureSession::can_disconnect_Camera_when_recording() { QCamera camera; @@ -463,6 +497,7 @@ void tst_QMediaCaptureSession::can_change_CameraDevice_on_attached_Camera() QVERIFY(!QTest::currentTestFailed()); camera.setCameraDevice(cameraDevices[1]); + camera.setActive(true); QTRY_COMPARE(cameraDeviceChanged.count(), 1); recordOk(session); @@ -649,6 +684,7 @@ void tst_QMediaCaptureSession::can_record_Camera_with_null_CameraDevice() session.setCamera(&camera); QTRY_COMPARE(cameraChanged.count(), 1); + camera.setActive(true); recordOk(session); QVERIFY(!QTest::currentTestFailed()); } @@ -735,6 +771,39 @@ void tst_QMediaCaptureSession::can_add_and_remove_ImageCapture() QVERIFY(capture.isReadyForCapture()); } +void tst_QMediaCaptureSession::can_move_ImageCapture_between_sessions() +{ + QMediaCaptureSession session0; + QMediaCaptureSession session1; + QSignalSpy imageCaptureChanged0(&session0, SIGNAL(imageCaptureChanged())); + QSignalSpy imageCaptureChanged1(&session1, SIGNAL(imageCaptureChanged())); + { + QImageCapture imageCapture; + { + QMediaCaptureSession session2; + QSignalSpy imageCaptureChanged2(&session2, SIGNAL(imageCaptureChanged())); + session2.setImageCapture(&imageCapture); + QTRY_COMPARE(imageCaptureChanged2.count(), 1); + } + QVERIFY(imageCapture.captureSession() == nullptr); + + session0.setImageCapture(&imageCapture); + QTRY_COMPARE(imageCaptureChanged0.count(), 1); + QVERIFY(session0.imageCapture() == &imageCapture); + QVERIFY(imageCapture.captureSession() == &session0); + + session1.setImageCapture(&imageCapture); + QTRY_COMPARE(imageCaptureChanged0.count(), 2); + QVERIFY(session0.imageCapture() == nullptr); + QTRY_COMPARE(imageCaptureChanged1.count(), 1); + QVERIFY(session1.imageCapture() == &imageCapture); + QVERIFY(imageCapture.captureSession() == &session1); + } + QTRY_COMPARE(imageCaptureChanged1.count(), 2); + QVERIFY(session1.imageCapture() == nullptr); +} + + void tst_QMediaCaptureSession::capture_is_not_available_when_Camera_is_null() { QCamera camera; |