diff options
-rw-r--r-- | src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp | 19 | ||||
-rw-r--r-- | src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h | 1 |
2 files changed, 15 insertions, 5 deletions
diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp index 82cb407b6..ee2ba3c6a 100644 --- a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp +++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder.cpp @@ -81,12 +81,17 @@ void QWindowsMediaEncoder::record(QMediaEncoderSettings &settings) if (m_state != QMediaRecorder::StoppedState) return; - m_mediaDeviceSession->setActive(true); + m_sessionWasActive = m_mediaDeviceSession->isActive(); - if (!m_mediaDeviceSession->isActive() && !m_mediaDeviceSession->isActivating()) { - error(QMediaRecorder::ResourceError, - QMediaRecorderPrivate::msgFailedStartRecording()); - return; + if (!m_sessionWasActive) { + + m_mediaDeviceSession->setActive(true); + + if (!m_mediaDeviceSession->isActivating()) { + error(QMediaRecorder::ResourceError, + QMediaRecorderPrivate::msgFailedStartRecording()); + return; + } } const auto audioOnly = settings.videoCodec() == QMediaFormat::VideoCodec::Unspecified; @@ -137,6 +142,8 @@ void QWindowsMediaEncoder::stop() { if (m_mediaDeviceSession && m_state != QMediaRecorder::StoppedState) m_mediaDeviceSession->stopRecording(); + if (!m_sessionWasActive) + m_mediaDeviceSession->setActive(false); } @@ -214,6 +221,8 @@ void QWindowsMediaEncoder::onStreamingError(int errorCode) if (m_state != QMediaRecorder::StoppedState) { m_mediaDeviceSession->stopRecording(); + if (!m_sessionWasActive) + m_mediaDeviceSession->setActive(false); } } diff --git a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h index 9269e0748..22295791a 100644 --- a/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h +++ b/src/multimedia/platform/windows/mediacapture/qwindowsmediaencoder_p.h @@ -99,6 +99,7 @@ private: QString m_fileName; QMediaMetaData m_metaData; qint64 m_duration = 0; + bool m_sessionWasActive = false; }; QT_END_NAMESPACE |