diff options
5 files changed, 21 insertions, 21 deletions
diff --git a/.qmake.conf b/.qmake.conf index 35f43d513..60b465038 100644 --- a/.qmake.conf +++ b/.qmake.conf @@ -1,4 +1,4 @@ load(qt_build_config) CONFIG += qt_example_installs -MODULE_VERSION = 5.4.2 +MODULE_VERSION = 5.4.3 diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp index ae6991a3d..3e3b17c7f 100644 --- a/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.cpp @@ -151,23 +151,19 @@ void QAndroidCaptureSession::setState(QMediaRecorder::State state) stop(); break; case QMediaRecorder::RecordingState: - if (!start()) - return; + start(); break; case QMediaRecorder::PausedState: // Not supported by Android API qWarning("QMediaRecorder::PausedState is not supported on Android"); - return; + break; } - - m_state = state; - emit stateChanged(m_state); } -bool QAndroidCaptureSession::start() +void QAndroidCaptureSession::start() { if (m_state == QMediaRecorder::RecordingState || m_status != QMediaRecorder::LoadedStatus) - return false; + return; setStatus(QMediaRecorder::StartingStatus); @@ -225,13 +221,13 @@ bool QAndroidCaptureSession::start() if (!m_mediaRecorder->prepare()) { emit error(QMediaRecorder::FormatError, QLatin1String("Unable to prepare the media recorder.")); restartViewfinder(); - return false; + return; } if (!m_mediaRecorder->start()) { emit error(QMediaRecorder::FormatError, QLatin1String("Unable to start the media recorder.")); restartViewfinder(); - return false; + return; } m_elapsedTime.start(); @@ -241,22 +237,21 @@ bool QAndroidCaptureSession::start() if (m_cameraSession) m_cameraSession->setReadyForCapture(false); - return true; + m_state = QMediaRecorder::RecordingState; + emit stateChanged(m_state); } void QAndroidCaptureSession::stop(bool error) { - if (m_state == QMediaRecorder::StoppedState) + if (m_state == QMediaRecorder::StoppedState || m_mediaRecorder == 0) return; setStatus(QMediaRecorder::FinalizingStatus); m_mediaRecorder->stop(); - m_notifyTimer.stop(); updateDuration(); m_elapsedTime.invalidate(); - m_mediaRecorder->release(); delete m_mediaRecorder; m_mediaRecorder = 0; @@ -279,6 +274,9 @@ void QAndroidCaptureSession::stop(bool error) m_actualOutputLocation = m_usedOutputLocation; emit actualLocationChanged(m_actualOutputLocation); } + + m_state = QMediaRecorder::StoppedState; + emit stateChanged(m_state); } void QAndroidCaptureSession::setStatus(QMediaRecorder::Status status) @@ -541,8 +539,6 @@ void QAndroidCaptureSession::onError(int what, int extra) Q_UNUSED(what) Q_UNUSED(extra) stop(true); - m_state = QMediaRecorder::StoppedState; - emit stateChanged(m_state); emit error(QMediaRecorder::ResourceError, QLatin1String("Unknown error.")); } diff --git a/src/plugins/android/src/mediacapture/qandroidcapturesession.h b/src/plugins/android/src/mediacapture/qandroidcapturesession.h index f96e9766a..c17f081d1 100644 --- a/src/plugins/android/src/mediacapture/qandroidcapturesession.h +++ b/src/plugins/android/src/mediacapture/qandroidcapturesession.h @@ -130,7 +130,7 @@ private: CaptureProfile getProfile(int id); - bool start(); + void start(); void stop(bool error = false); void setStatus(QMediaRecorder::Status status); diff --git a/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.h b/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.h index 28188e274..2f499f0ab 100644 --- a/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.h +++ b/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.h @@ -69,6 +69,7 @@ private: QString m_activeInput; bool m_dirty; + QString m_defaultDevice; QStringList m_devices; QMap<QString, QString> m_deviceDescriptions; }; diff --git a/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.mm b/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.mm index 4a2f068f5..51a4eb4e6 100644 --- a/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.mm +++ b/src/plugins/avfoundation/camera/avfaudioinputselectorcontrol.mm @@ -60,8 +60,11 @@ AVFAudioInputSelectorControl::AVFAudioInputSelectorControl(AVFCameraService *ser QString::fromUtf8([[device localizedName] UTF8String])); } - if (m_devices.size() > 0) - m_activeInput = m_devices.first(); + AVCaptureDevice *defaultDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; + if (defaultDevice) { + m_defaultDevice = QString::fromUtf8([defaultDevice.uniqueID UTF8String]); + m_activeInput = m_defaultDevice; + } } AVFAudioInputSelectorControl::~AVFAudioInputSelectorControl() @@ -80,7 +83,7 @@ QString AVFAudioInputSelectorControl::inputDescription(const QString &name) cons QString AVFAudioInputSelectorControl::defaultInput() const { - return m_devices.size() > 0 ? m_devices.first() : QString(); + return m_defaultDevice; } QString AVFAudioInputSelectorControl::activeInput() const |