summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPiotr Srebrny <piotr.srebrny@qt.io>2021-09-24 19:26:11 +0200
committerPiotr Srebrny <piotr.srebrny@qt.io>2021-09-29 18:29:19 +0200
commitd2d645a68f7cbc36cd2d2dff3c37a1f5364d7f4d (patch)
treebaf103ae5b8ca40b283860675bace0136eaf93cd /tests
parente9e79019fd015d0b4753b21cb851f7d215e0ee20 (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.cpp69
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;