diff options
author | Piotr Srebrny <piotr.srebrny@qt.io> | 2021-09-24 16:43:18 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-09-29 17:57:04 +0000 |
commit | 97405fcd0e1b57146d0c3b166c190f1e4d6b25aa (patch) | |
tree | 30a3c300403e061133f48687f1d0abcdc7e32646 /tests | |
parent | 46142fa2b11957fe9ac4b19c88801c2f11881da2 (diff) |
Handover recorder between session
This patch enable a proper handover of QMediaRecorder between session.
When the recorder is set to one session it will automatically disconnect
from the owning session.
Change-Id: I7bc210134dee98126fea9da8d68c55cfa72a57f8
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit e9e79019fd015d0b4753b21cb851f7d215e0ee20)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp index d7f0352ea..7db52260f 100644 --- a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp +++ b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp @@ -80,6 +80,7 @@ private slots: void can_change_VideoOutput_when_recording(); void can_add_and_remove_recorders(); + void can_move_Recorder_between_sessions(); void cannot_record_without_Camera_and_AudioInput(); void can_record_AudioInput_with_null_AudioDevice(); void can_record_Camera_with_null_CameraDevice(); @@ -578,6 +579,38 @@ void tst_QMediaCaptureSession::can_add_and_remove_recorders() QVERIFY(!QTest::currentTestFailed()); } +void tst_QMediaCaptureSession::can_move_Recorder_between_sessions() +{ + QMediaCaptureSession session0; + QMediaCaptureSession session1; + QSignalSpy recorderChanged0(&session0, SIGNAL(recorderChanged())); + QSignalSpy recorderChanged1(&session1, SIGNAL(recorderChanged())); + { + QMediaRecorder recorder; + { + QMediaCaptureSession session2; + QSignalSpy recorderChanged2(&session2, SIGNAL(recorderChanged())); + session2.setRecorder(&recorder); + QTRY_COMPARE(recorderChanged2.count(), 1); + } + QVERIFY(recorder.captureSession() == nullptr); + + session0.setRecorder(&recorder); + QTRY_COMPARE(recorderChanged0.count(), 1); + QVERIFY(session0.recorder() == &recorder); + QVERIFY(recorder.captureSession() == &session0); + + session1.setRecorder(&recorder); + QTRY_COMPARE(recorderChanged0.count(), 2); + QVERIFY(session0.recorder() == nullptr); + QTRY_COMPARE(recorderChanged1.count(), 1); + QVERIFY(session1.recorder() == &recorder); + QVERIFY(recorder.captureSession() == &session1); + } + QTRY_COMPARE(recorderChanged1.count(), 2); + QVERIFY(session1.recorder() == nullptr); +} + void tst_QMediaCaptureSession::cannot_record_without_Camera_and_AudioInput() { QMediaCaptureSession session; |