diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-02-10 15:09:49 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-02-12 15:38:24 +0000 |
commit | 3c59ba2b3ce96f578b2d677ecc1fbf7da0b2e27f (patch) | |
tree | 8bf1df70cb5e264a5674d0eb513841d8dec12251 | |
parent | 1920146be1193a1136bd279f8036778e8c9c4083 (diff) |
Remove camera locking API
QCamera::lock()/unlock() is something that's not needed
these days anymore. cameras will automatically focus anyway,
there's no real reason to lock the focus (or other properties)
to some specific value in 99% of the cases.
Plus it wasn't supported on Linux or macOS/iOS anyway.
Change-Id: I437d29cbb768da3ece42eea8d753eeafa0c534ae
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
29 files changed, 109 insertions, 1974 deletions
diff --git a/examples/multimedia/declarative-camera/CMakeLists.txt b/examples/multimedia/declarative-camera/CMakeLists.txt index 8fc0eeded..e978f7f77 100644 --- a/examples/multimedia/declarative-camera/CMakeLists.txt +++ b/examples/multimedia/declarative-camera/CMakeLists.txt @@ -49,7 +49,6 @@ set(declarative-camera_resource_files "CameraListPopup.qml" "CameraPropertyButton.qml" "CameraPropertyPopup.qml" - "FocusButton.qml" "PhotoCaptureControls.qml" "PhotoPreview.qml" "Popup.qml" diff --git a/examples/multimedia/declarative-camera/FocusButton.qml b/examples/multimedia/declarative-camera/FocusButton.qml deleted file mode 100644 index fab8aa11e..000000000 --- a/examples/multimedia/declarative-camera/FocusButton.qml +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** BSD License Usage -** Alternatively, you may use this file under the terms of the BSD license -** as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of The Qt Company Ltd nor the names of its -** contributors may be used to endorse or promote products derived -** from this software without specific prior written permission. -** -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.0 -import QtMultimedia 5.0 - -CameraButton { - property Camera camera - - onClicked: { - if (camera.lockStatus == Camera.Unlocked) - camera.searchAndLock(); - else - camera.unlock(); - } - - text: { - if (camera.lockStatus == Camera.Unlocked) - "Focus"; - else if (camera.lockStatus == Camera.Searching) - "Focusing" - else - "Unlock" - } -} diff --git a/examples/multimedia/declarative-camera/PhotoCaptureControls.qml b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml index 2845d151a..379ca1f66 100644 --- a/examples/multimedia/declarative-camera/PhotoCaptureControls.qml +++ b/examples/multimedia/declarative-camera/PhotoCaptureControls.qml @@ -79,11 +79,6 @@ FocusScope { id: buttonsColumn spacing: 8 - FocusButton { - camera: captureControls.camera - visible: camera.cameraStatus == Camera.ActiveStatus && camera.focus.isFocusModeSupported(Camera.FocusAuto) - } - CameraButton { text: "Capture" visible: camera.imageCapture.ready diff --git a/examples/multimedia/declarative-camera/VideoCaptureControls.qml b/examples/multimedia/declarative-camera/VideoCaptureControls.qml index 9aadcdf95..74dc8bc6b 100644 --- a/examples/multimedia/declarative-camera/VideoCaptureControls.qml +++ b/examples/multimedia/declarative-camera/VideoCaptureControls.qml @@ -79,11 +79,6 @@ FocusScope { id: buttonsColumn spacing: 8 - FocusButton { - camera: captureControls.camera - visible: camera.cameraStatus == Camera.ActiveStatus && camera.focus.isFocusModeSupported(Camera.FocusAuto) - } - CameraButton { text: "Record" visible: camera.videoRecorder.recorderStatus == CameraRecorder.LoadedStatus diff --git a/examples/multimedia/declarative-camera/declarative-camera.qrc b/examples/multimedia/declarative-camera/declarative-camera.qrc index 6d654d59f..e4f6ee981 100644 --- a/examples/multimedia/declarative-camera/declarative-camera.qrc +++ b/examples/multimedia/declarative-camera/declarative-camera.qrc @@ -4,7 +4,6 @@ <file>ZoomControl.qml</file> <file>VideoCaptureControls.qml</file> <file>VideoPreview.qml</file> - <file>FocusButton.qml</file> <file>PhotoCaptureControls.qml</file> <file>declarative-camera.qml</file> <file>Popup.qml</file> diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index f5d507d46..33e596768 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -123,7 +123,6 @@ void Camera::setCamera(const QCameraInfo &cameraInfo) m_camera->setViewfinder(ui->viewfinder); updateCameraState(m_camera->state()); - updateLockStatus(m_camera->lockStatus(), QCamera::UserRequest); updateRecorderState(m_mediaRecorder->state()); connect(m_imageCapture, &QCameraImageCapture::readyForCaptureChanged, this, &Camera::readyForCapture); @@ -132,9 +131,6 @@ void Camera::setCamera(const QCameraInfo &cameraInfo) connect(m_imageCapture, QOverload<int, QCameraImageCapture::Error, const QString &>::of(&QCameraImageCapture::error), this, &Camera::displayCaptureError); - connect(m_camera.data(), QOverload<QCamera::LockStatus, QCamera::LockChangeReason>::of(&QCamera::lockStatusChanged), - this, &Camera::updateLockStatus); - ui->captureWidget->setTabEnabled(0, (m_camera->isCaptureModeSupported(QCamera::CaptureStillImage))); ui->captureWidget->setTabEnabled(1, (m_camera->isCaptureModeSupported(QCamera::CaptureVideo))); @@ -150,7 +146,6 @@ void Camera::keyPressEvent(QKeyEvent * event) switch (event->key()) { case Qt::Key_CameraFocus: displayViewfinder(); - m_camera->searchAndLock(); event->accept(); break; case Qt::Key_Camera: @@ -171,16 +166,7 @@ void Camera::keyPressEvent(QKeyEvent * event) void Camera::keyReleaseEvent(QKeyEvent *event) { - if (event->isAutoRepeat()) - return; - - switch (event->key()) { - case Qt::Key_CameraFocus: - m_camera->unlock(); - break; - default: - QMainWindow::keyReleaseEvent(event); - } + QMainWindow::keyReleaseEvent(event); } void Camera::updateRecordTime() @@ -268,45 +254,6 @@ void Camera::setMuted(bool muted) m_mediaRecorder->setMuted(muted); } -void Camera::toggleLock() -{ - switch (m_camera->lockStatus()) { - case QCamera::Searching: - case QCamera::Locked: - m_camera->unlock(); - break; - case QCamera::Unlocked: - m_camera->searchAndLock(); - } -} - -void Camera::updateLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - QColor indicationColor = Qt::black; - - switch (status) { - case QCamera::Searching: - indicationColor = Qt::yellow; - ui->statusbar->showMessage(tr("Focusing...")); - ui->lockButton->setText(tr("Focusing...")); - break; - case QCamera::Locked: - indicationColor = Qt::darkGreen; - ui->lockButton->setText(tr("Unlock")); - ui->statusbar->showMessage(tr("Focused"), 2000); - break; - case QCamera::Unlocked: - indicationColor = reason == QCamera::LockFailed ? Qt::red : Qt::black; - ui->lockButton->setText(tr("Focus")); - if (reason == QCamera::LockFailed) - ui->statusbar->showMessage(tr("Focus Failed"), 2000); - } - - QPalette palette = ui->lockButton->palette(); - palette.setColor(QPalette::ButtonText, indicationColor); - ui->lockButton->setPalette(palette); -} - void Camera::takeImage() { m_isCapturingImage = true; diff --git a/examples/multimediawidgets/camera/camera.h b/examples/multimediawidgets/camera/camera.h index a59aad28b..5ccac9165 100644 --- a/examples/multimediawidgets/camera/camera.h +++ b/examples/multimediawidgets/camera/camera.h @@ -81,7 +81,6 @@ private slots: void stop(); void setMuted(bool); - void toggleLock(); void takeImage(); void displayCaptureError(int, QCameraImageCapture::Error, const QString &errorString); @@ -102,7 +101,6 @@ private slots: void updateRecordTime(); void processCapturedImage(int requestId, const QImage &img); - void updateLockStatus(QCamera::LockStatus, QCamera::LockChangeReason); void displayViewfinder(); void displayCapturedImage(); diff --git a/examples/multimediawidgets/camera/camera.ui b/examples/multimediawidgets/camera/camera.ui index 3e660527b..ba82ba623 100644 --- a/examples/multimediawidgets/camera/camera.ui +++ b/examples/multimediawidgets/camera/camera.ui @@ -15,118 +15,7 @@ </property> <widget class="QWidget" name="centralwidget"> <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0" rowspan="3"> - <widget class="QStackedWidget" name="stackedWidget"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>1</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="palette"> - <palette> - <active> - <colorrole role="Base"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - </brush> - </colorrole> - <colorrole role="Window"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>145</red> - <green>145</green> - <blue>145</blue> - </color> - </brush> - </colorrole> - </active> - <inactive> - <colorrole role="Base"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>255</red> - <green>255</green> - <blue>255</blue> - </color> - </brush> - </colorrole> - <colorrole role="Window"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>145</red> - <green>145</green> - <blue>145</blue> - </color> - </brush> - </colorrole> - </inactive> - <disabled> - <colorrole role="Base"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>145</red> - <green>145</green> - <blue>145</blue> - </color> - </brush> - </colorrole> - <colorrole role="Window"> - <brush brushstyle="SolidPattern"> - <color alpha="255"> - <red>145</red> - <green>145</green> - <blue>145</blue> - </color> - </brush> - </colorrole> - </disabled> - </palette> - </property> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="viewfinderPage"> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="0" column="0"> - <widget class="QVideoWidget" name="viewfinder" native="true"/> - </item> - </layout> - </widget> - <widget class="QWidget" name="previewPage"> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="0" column="0"> - <widget class="QLabel" name="lastImagePreviewLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="frameShape"> - <enum>QFrame::Box</enum> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> <item row="1" column="1" colspan="2"> - <widget class="QPushButton" name="lockButton"> - <property name="text"> - <string>Focus</string> - </property> - </widget> - </item> - <item row="2" column="1" colspan="2"> <widget class="QTabWidget" name="captureWidget"> <property name="currentIndex"> <number>0</number> @@ -145,7 +34,7 @@ <string>Capture Photo</string> </property> <property name="icon"> - <iconset resource="camera.qrc"> + <iconset> <normaloff>:/images/shutter.svg</normaloff>:/images/shutter.svg</iconset> </property> </widget> @@ -244,6 +133,110 @@ </widget> </widget> </item> + <item row="0" column="0" rowspan="2"> + <widget class="QStackedWidget" name="stackedWidget"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="palette"> + <palette> + <active> + <colorrole role="Base"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>145</red> + <green>145</green> + <blue>145</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="Base"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>145</red> + <green>145</green> + <blue>145</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="Base"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>145</red> + <green>145</green> + <blue>145</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window"> + <brush brushstyle="SolidPattern"> + <color alpha="255"> + <red>145</red> + <green>145</green> + <blue>145</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="viewfinderPage"> + <layout class="QGridLayout" name="gridLayout_5"> + <item row="0" column="0"> + <widget class="QVideoWidget" name="viewfinder" native="true"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="previewPage"> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QLabel" name="lastImagePreviewLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>QFrame::Box</enum> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> </layout> </widget> <widget class="QMenuBar" name="menubar"> @@ -252,7 +245,7 @@ <x>0</x> <y>0</y> <width>668</width> - <height>21</height> + <height>28</height> </rect> </property> <widget class="QMenu" name="menuFile"> @@ -304,9 +297,7 @@ <container>1</container> </customwidget> </customwidgets> - <resources> - <include location="camera.qrc"/> - </resources> + <resources/> <connections> <connection> <sender>recordButton</sender> @@ -389,22 +380,6 @@ </hints> </connection> <connection> - <sender>lockButton</sender> - <signal>clicked()</signal> - <receiver>Camera</receiver> - <slot>toggleLock()</slot> - <hints> - <hint type="sourcelabel"> - <x>658</x> - <y>75</y> - </hint> - <hint type="destinationlabel"> - <x>453</x> - <y>119</y> - </hint> - </hints> - </connection> - <connection> <sender>muteButton</sender> <signal>toggled(bool)</signal> <receiver>Camera</receiver> diff --git a/src/imports/multimedia/plugins.qmltypes b/src/imports/multimedia/plugins.qmltypes index 2450865d5..4dc0f7c90 100644 --- a/src/imports/multimedia/plugins.qmltypes +++ b/src/imports/multimedia/plugins.qmltypes @@ -346,33 +346,6 @@ Module { } } Enum { - name: "LockStatus" - values: { - "Unlocked": 0, - "Searching": 1, - "Locked": 2 - } - } - Enum { - name: "LockChangeReason" - values: { - "UserRequest": 0, - "LockAcquired": 1, - "LockFailed": 2, - "LockLost": 3, - "LockTemporaryLost": 4 - } - } - Enum { - name: "LockType" - values: { - "NoLock": 0, - "LockExposure": 1, - "LockWhiteBalance": 2, - "LockFocus": 4 - } - } - Enum { name: "Position" values: { "UnspecifiedPosition": 0, @@ -383,7 +356,6 @@ Module { Property { name: "state"; type: "QCamera::State"; isReadonly: true } Property { name: "status"; type: "QCamera::Status"; isReadonly: true } Property { name: "captureMode"; type: "QCamera::CaptureModes" } - Property { name: "lockStatus"; type: "QCamera::LockStatus"; isReadonly: true } Signal { name: "stateChanged" Parameter { name: "state"; type: "QCamera::State" } @@ -396,19 +368,6 @@ Module { name: "statusChanged" Parameter { name: "status"; type: "QCamera::Status" } } - Signal { name: "locked" } - Signal { name: "lockFailed" } - Signal { - name: "lockStatusChanged" - Parameter { name: "status"; type: "QCamera::LockStatus" } - Parameter { name: "reason"; type: "QCamera::LockChangeReason" } - } - Signal { - name: "lockStatusChanged" - Parameter { name: "lock"; type: "QCamera::LockType" } - Parameter { name: "status"; type: "QCamera::LockStatus" } - Parameter { name: "reason"; type: "QCamera::LockChangeReason" } - } Signal { name: "error" Parameter { type: "QCamera::Error" } @@ -421,16 +380,6 @@ Module { Method { name: "unload" } Method { name: "start" } Method { name: "stop" } - Method { name: "searchAndLock" } - Method { name: "unlock" } - Method { - name: "searchAndLock" - Parameter { name: "locks"; type: "QCamera::LockTypes" } - } - Method { - name: "unlock" - Parameter { name: "locks"; type: "QCamera::LockTypes" } - } } Component { name: "QDeclarativeAudio" @@ -612,14 +561,6 @@ Module { } } Enum { - name: "LockStatus" - values: { - "Unlocked": 0, - "Searching": 1, - "Locked": 2 - } - } - Enum { name: "Error" values: { "NoError": 0, @@ -712,7 +653,6 @@ Module { Property { name: "captureMode"; type: "CaptureMode" } Property { name: "cameraState"; type: "State" } Property { name: "cameraStatus"; type: "Status"; isReadonly: true } - Property { name: "lockStatus"; type: "LockStatus"; isReadonly: true } Property { name: "errorCode"; type: "Error"; isReadonly: true } Property { name: "errorString"; type: "string"; isReadonly: true } Property { name: "availability"; type: "Availability"; isReadonly: true } @@ -801,12 +741,6 @@ Module { name: "setCameraState" Parameter { name: "state"; type: "State" } } - Method { name: "searchAndLock" } - Method { name: "unlock" } - Method { - name: "setOpticalZoom" - Parameter { type: "double" } - } Method { name: "setDigitalZoom" Parameter { type: "double" } diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp index d2af7ab7d..d47ec4471 100644 --- a/src/imports/multimedia/qdeclarativecamera.cpp +++ b/src/imports/multimedia/qdeclarativecamera.cpp @@ -186,8 +186,6 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) : connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged())); - connect(m_camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason)), - this, SIGNAL(lockStatusChanged())); connect(m_camera, &QCamera::stateChanged, this, &QDeclarativeCamera::_q_updateState); connect(m_camera, SIGNAL(statusChanged(QCamera::Status)), this, SIGNAL(cameraStatusChanged())); connect(m_camera, SIGNAL(errorOccurred(QCamera::Error)), this, SLOT(_q_errorOccurred(QCamera::Error))); @@ -561,66 +559,6 @@ void QDeclarativeCamera::stop() setCameraState(QDeclarativeCamera::LoadedState); } - -/*! - \qmlproperty enumeration QtMultimedia::Camera::lockStatus - - This property holds the status of all the requested camera locks. - - \value Camera.Unlocked - The application is not interested in camera settings value. - The camera may keep this parameter without changes, which is common - with camera focus, or adjust exposure and white balance constantly - to keep the viewfinder image nice. - \value Camera.Searching - The application has requested the camera focus, exposure, or white - balance lock with searchAndLock(). This state indicates the camera - is focusing or calculating exposure and white balance. - \value Camera.Locked - The camera focus, exposure, or white balance is locked. - The camera is ready to capture, and the application may check the - exposure parameters. - The locked state usually means the requested parameter stays the - same, except in cases where the parameter is requested to be updated - constantly. For example, in continuous focusing mode, the focus is - considered locked as long as the object is in focus, even while the - actual focusing distance may be constantly changing. -*/ -/*! - \property QDeclarativeCamera::lockStatus - - This property holds the status of all the requested camera locks. -*/ -QDeclarativeCamera::LockStatus QDeclarativeCamera::lockStatus() const -{ - return QDeclarativeCamera::LockStatus(m_camera->lockStatus()); -} - -/*! - \qmlmethod QtMultimedia::Camera::searchAndLock() - - Start focusing, exposure and white balance calculation. - - This is appropriate to call when the camera focus button is pressed - (or on a camera capture button half-press). If the camera supports - autofocusing, information on the focus zones is available through - the \l {CameraFocus}{focus} property. -*/ -void QDeclarativeCamera::searchAndLock() -{ - m_camera->searchAndLock(); -} - -/*! - \qmlmethod QtMultimedia::Camera::unlock() - - Unlock focus, exposure and white balance locks. - */ -void QDeclarativeCamera::unlock() -{ - m_camera->unlock(); -} - /*! \qmlproperty real QtMultimedia::Camera::minimumZoomFactor @@ -703,15 +641,6 @@ void QDeclarativeCamera::setZoomFactor(qreal value) */ /*! - \qmlsignal Camera::lockStatusChanged() - - This signal is emitted when the lock status (focus, exposure etc) changes. - This can happen when locking (e.g. autofocusing) is complete or has failed. - - The corresponding handler is \c onLockStatusChanged. -*/ - -/*! \qmlsignal Camera::cameraStateChanged(state) This signal is emitted when the camera state has changed to \a state. Since the diff --git a/src/imports/multimedia/qdeclarativecamera_p.h b/src/imports/multimedia/qdeclarativecamera_p.h index 0c60d9319..92430c0c4 100644 --- a/src/imports/multimedia/qdeclarativecamera_p.h +++ b/src/imports/multimedia/qdeclarativecamera_p.h @@ -84,7 +84,6 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus Q_PROPERTY(CaptureMode captureMode READ captureMode WRITE setCaptureMode NOTIFY captureModeChanged) Q_PROPERTY(State cameraState READ cameraState WRITE setCameraState NOTIFY cameraStateChanged) Q_PROPERTY(Status cameraStatus READ cameraStatus NOTIFY cameraStatusChanged) - Q_PROPERTY(LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged) Q_PROPERTY(Error errorCode READ errorCode NOTIFY errorChanged) Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) @@ -105,7 +104,6 @@ class QDeclarativeCamera : public QObject, public QQmlParserStatus Q_ENUMS(CaptureMode) Q_ENUMS(State) Q_ENUMS(Status) - Q_ENUMS(LockStatus) Q_ENUMS(Error) Q_ENUMS(FlashMode) @@ -148,13 +146,6 @@ public: ActiveStatus = QCamera::ActiveStatus }; - enum LockStatus - { - Unlocked = QCamera::Unlocked, - Searching = QCamera::Searching, - Locked = QCamera::Locked - }; - enum Error { NoError = QCamera::NoError, @@ -257,8 +248,6 @@ public: Error errorCode() const; QString errorString() const; - LockStatus lockStatus() const; - qreal minimumZoomFactor() const; qreal maximumZoomFactor() const; @@ -274,9 +263,6 @@ public Q_SLOTS: void setCameraState(State state); - void searchAndLock(); - void unlock(); - void setZoomFactor(qreal); Q_REVISION(2) QJSValue supportedResolutions(qreal minimumFrameRate = 0.0, @@ -296,8 +282,6 @@ Q_SIGNALS: void cameraStateChanged(QDeclarativeCamera::State); void cameraStatusChanged(); - void lockStatusChanged(); - void zoomFactorChanged(qreal); void mediaSourceChanged(); diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index 7276f9fdd..3f43c03a2 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -54,20 +54,6 @@ QT_BEGIN_NAMESPACE -static void qRegisterCameraMetaTypes() -{ - qRegisterMetaType<QCamera::Error>("QCamera::Error"); - qRegisterMetaType<QCamera::State>("QCamera::State"); - qRegisterMetaType<QCamera::Status>("QCamera::Status"); - qRegisterMetaType<QCamera::CaptureModes>("QCamera::CaptureModes"); - qRegisterMetaType<QCamera::LockType>("QCamera::LockType"); - qRegisterMetaType<QCamera::LockStatus>("QCamera::LockStatus"); - qRegisterMetaType<QCamera::LockChangeReason>("QCamera::LockChangeReason"); - qRegisterMetaType<QCameraInfo::Position>("QCameraInfo::Position"); -} - -Q_CONSTRUCTOR_FUNCTION(qRegisterCameraMetaTypes) - /*! \class QCamera @@ -175,8 +161,6 @@ void QCameraPrivate::initControls() q->connect(control, SIGNAL(captureModeChanged(QCamera::CaptureModes)), q, SIGNAL(captureModeChanged(QCamera::CaptureModes))); q->connect(control, SIGNAL(error(int,QString)), q, SLOT(_q_error(int,QString))); - q->connect(control, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)), - q, SLOT(_q_updateLockStatus(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); } error = QCamera::NoError; @@ -206,68 +190,6 @@ void QCameraPrivate::clear() service = nullptr; } -void QCameraPrivate::updateLockStatus() -{ - Q_Q(QCamera); - - QCamera::LockStatus oldStatus = lockStatus; - - QMap<QCamera::LockStatus, int> lockStatusPriority; - lockStatusPriority.insert(QCamera::Locked, 1); - lockStatusPriority.insert(QCamera::Unlocked, 2); - lockStatusPriority.insert(QCamera::Searching, 3); - - lockStatus = requestedLocks ? QCamera::Locked : QCamera::Unlocked; - int priority = 0; - - QList<QCamera::LockStatus> lockStatuses; - - if (requestedLocks & QCamera::LockFocus) - lockStatuses << q->lockStatus(QCamera::LockFocus); - - if (requestedLocks & QCamera::LockExposure) - lockStatuses << q->lockStatus(QCamera::LockExposure); - - if (requestedLocks & QCamera::LockWhiteBalance) - lockStatuses << q->lockStatus(QCamera::LockWhiteBalance); - - - for (QCamera::LockStatus currentStatus : qAsConst(lockStatuses)) { - int currentPriority = lockStatusPriority.value(currentStatus, -1); - if (currentPriority > priority) { - priority = currentPriority; - lockStatus = currentStatus; - } - } - - if (!supressLockChangedSignal && oldStatus != lockStatus) { - emit q->lockStatusChanged(lockStatus, lockChangeReason); - - if (lockStatus == QCamera::Locked) - emit q->locked(); - else if (lockStatus == QCamera::Unlocked && lockChangeReason == QCamera::LockFailed) - emit q->lockFailed(); - } -/* - qDebug() << "Requested locks:" << (requestedLocks & QCamera::LockExposure ? 'e' : ' ') - << (requestedLocks & QCamera::LockFocus ? 'f' : ' ') - << (requestedLocks & QCamera::LockWhiteBalance ? 'w' : ' '); - qDebug() << "Lock status: f:" << q->lockStatus(QCamera::LockFocus) - << " e:" << q->lockStatus(QCamera::LockExposure) - << " w:" << q->lockStatus(QCamera::LockWhiteBalance) - << " composite:" << lockStatus; -*/ -} - -void QCameraPrivate::_q_updateLockStatus(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - Q_Q(QCamera); - lockChangeReason = reason; - updateLockStatus(); - emit q->lockStatusChanged(type, status, reason); -} - - /*! Construct a QCamera with a \a parent. @@ -562,134 +484,6 @@ void QCamera::setCameraInfo(const QCameraInfo &cameraInfo) d->control->setCamera(d->cameraInfo); } - -/*! - Returns the lock types that the camera supports. -*/ -QCamera::LockTypes QCamera::supportedLocks() const -{ - Q_D(const QCamera); - - return d->control - ? d->control->supportedLocks() - : QCamera::LockTypes(); -} - -/*! - Returns the requested lock types. -*/ -QCamera::LockTypes QCamera::requestedLocks() const -{ - return d_func()->requestedLocks; -} - -/*! - Returns the status of requested camera settings locks. -*/ -QCamera::LockStatus QCamera::lockStatus() const -{ - return d_func()->lockStatus; -} - -/*! - Returns the lock status for a given \a lockType. -*/ -QCamera::LockStatus QCamera::lockStatus(QCamera::LockType lockType) const -{ - const QCameraPrivate *d = d_func(); - - if (!(lockType & d->requestedLocks)) - return QCamera::Unlocked; - - if (d->control) - return d->control->lockStatus(lockType); - - return QCamera::Locked; -} - -/*! - \fn void QCamera::searchAndLock(QCamera::LockTypes locks) - - Locks the camera settings with the requested \a locks, including focusing in the single autofocus mode, - exposure and white balance if the exposure and white balance modes are not manual. - - The camera settings are usually locked before taking one or multiple still images, - in responce to the shutter button being half pressed. - - The QCamera::locked() signal is emitted when camera settings are successfully locked, - otherwise QCamera::lockFailed() is emitted. - - QCamera also emits lockStatusChanged(QCamera::LockType, QCamera::LockStatus) - on individual lock status changes and lockStatusChanged(QCamera::LockStatus) signal on composite status changes. - - Locking serves two roles: it initializes calculation of automatic parameter - (focusing, calculating the correct exposure and white balance) and allows - to keep some or all of those parameters during number of shots. - - If the camera doesn't support keeping one of parameters between shots, the related - lock state changes to QCamera::Unlocked. - - It's also acceptable to relock already locked settings, - depending on the lock parameter this initiates new focusing, exposure or white balance calculation. - */ -void QCamera::searchAndLock(QCamera::LockTypes locks) -{ - Q_D(QCamera); - - QCamera::LockStatus oldStatus = d->lockStatus; - d->supressLockChangedSignal = true; - - if (d->control) { - locks &= d->control->supportedLocks(); - d->requestedLocks |= locks; - d->control->searchAndLock(locks); - } - - d->supressLockChangedSignal = false; - - d->lockStatus = oldStatus; - d->updateLockStatus(); -} - -/*! - Lock all the supported camera settings. - */ -void QCamera::searchAndLock() -{ - searchAndLock(LockExposure | LockWhiteBalance | LockFocus); -} - -/*! - Unlocks the camera settings specified with \a locks or cancel the current locking if one is active. - */ -void QCamera::unlock(QCamera::LockTypes locks) -{ - Q_D(QCamera); - - QCamera::LockStatus oldStatus = d->lockStatus; - d->supressLockChangedSignal = true; - - d->requestedLocks &= ~locks; - - if (d->control) { - locks &= d->control->supportedLocks(); - d->control->unlock(locks); - } - - d->supressLockChangedSignal = false; - - d->lockStatus = oldStatus; - d->updateLockStatus(); -} - -/*! - Unlock all the requested camera locks. - */ -void QCamera::unlock() -{ - unlock(d_func()->requestedLocks); -} - /*! \enum QCamera::State @@ -777,93 +571,6 @@ void QCamera::unlock() \value CaptureVideo Camera is configured for video capture. */ -/*! - \enum QCamera::LockType - - This enum holds the camera lock type. - - \value NoLock - \value LockExposure - Lock camera exposure. - \value LockWhiteBalance - Lock the white balance. - \value LockFocus - Lock camera focus. -*/ - - -/*! - \property QCamera::lockStatus - \brief The overall status for all the requested camera locks. -*/ - -/*! - \fn void QCamera::locked() - - Signals all the requested camera settings are locked. -*/ - -/*! - \fn void QCamera::lockFailed() - - Signals locking of at least one requested camera settings failed. -*/ - -/*! - \fn QCamera::lockStatusChanged(QCamera::LockStatus status, QCamera::LockChangeReason reason) - - Signals the overall \a status for all the requested camera locks was changed with specified \a reason. -*/ - -/*! - \fn QCamera::lockStatusChanged(QCamera::LockType lock, QCamera::LockStatus status, QCamera::LockChangeReason reason) - Signals the \a lock \a status was changed with specified \a reason. -*/ - -/*! - \enum QCamera::LockStatus - - This enum holds the overall status for all the requested camera locks. - - \value Unlocked - The application is not interested in camera settings value. - The camera may keep this parameter without changes, this is common with camera focus, - or adjust exposure and white balance constantly to keep the viewfinder image nice. - \value Searching - The application has requested the camera focus, exposure or white balance lock with - QCamera::searchAndLock(). This state indicates the camera is focusing or - calculating exposure and white balance. - \value Locked - The camera focus, exposure or white balance is locked. - The camera is ready to capture, application may check the exposure - stays the same, parameters. The \c Locked status usually means the - requested parameter except in the cases when the parameter is requested - to be constantly updated. For example, in continuous focusing mode, - the focus is considered locked as long as the object is in focus, even - while the actual focusing distance may be constantly changing. -*/ - -/*! - \enum QCamera::LockChangeReason - - This enum holds the reason why the camera lock status changed. - - \value UserRequest - The lock status changed in result of user request, usually to unlock camera settings. - \value LockAcquired - The lock status successfuly changed to QCamera::Locked. - \value LockFailed - The camera failed to acquire the requested lock in result of - autofocus failure, exposure out of supported range, etc. - \value LockLost - The camera is not able to maintain the requested lock any more. - Lock status is changed to QCamera::Unlocked. - \value LockTemporaryLost - The lock is lost, but the camera is working hard to reacquire it. - This value may be used in continuous focusing mode, - when the camera loses the focus, the focus lock state is changed to Qcamera::Searching - with LockTemporaryLost reason. -*/ /*! \enum QCamera::Error diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h index 6bbb6609f..f31083812 100644 --- a/src/multimedia/camera/qcamera.h +++ b/src/multimedia/camera/qcamera.h @@ -68,15 +68,11 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QMediaSource Q_PROPERTY(QCamera::State state READ state NOTIFY stateChanged) Q_PROPERTY(QCamera::Status status READ status NOTIFY statusChanged) Q_PROPERTY(QCamera::CaptureModes captureMode READ captureMode WRITE setCaptureMode NOTIFY captureModeChanged) - Q_PROPERTY(QCamera::LockStatus lockStatus READ lockStatus NOTIFY lockStatusChanged) Q_ENUMS(Status) Q_ENUMS(State) Q_ENUMS(CaptureMode) Q_ENUMS(Error) - Q_ENUMS(LockStatus) - Q_ENUMS(LockChangeReason) - Q_ENUMS(LockType) Q_ENUMS(Position) public: enum Status { @@ -110,30 +106,6 @@ public: CameraError }; - enum LockStatus - { - Unlocked, - Searching, - Locked - }; - - enum LockChangeReason { - UserRequest, - LockAcquired, - LockFailed, - LockLost, - LockTemporaryLost - }; - - enum LockType - { - NoLock = 0, - LockExposure = 0x01, - LockWhiteBalance = 0x02, - LockFocus = 0x04 - }; - Q_DECLARE_FLAGS(LockTypes, LockType) - explicit QCamera(QObject *parent = nullptr); explicit QCamera(const QCameraInfo& cameraInfo, QObject *parent = nullptr); explicit QCamera(QCameraInfo::Position position, QObject *parent = nullptr); @@ -160,12 +132,6 @@ public: Error error() const; QString errorString() const; - QCamera::LockTypes supportedLocks() const; - QCamera::LockTypes requestedLocks() const; - - QCamera::LockStatus lockStatus() const; - QCamera::LockStatus lockStatus(QCamera::LockType lock) const; - public Q_SLOTS: void setCaptureMode(QCamera::CaptureModes mode); @@ -175,23 +141,10 @@ public Q_SLOTS: void start(); void stop(); - void searchAndLock(); - void unlock(); - - void searchAndLock(QCamera::LockTypes locks); - void unlock(QCamera::LockTypes locks); - Q_SIGNALS: void stateChanged(QCamera::State state); void captureModeChanged(QCamera::CaptureModes); void statusChanged(QCamera::Status status); - - void locked(); - void lockFailed(); - - void lockStatusChanged(QCamera::LockStatus status, QCamera::LockChangeReason reason); - void lockStatusChanged(QCamera::LockType lock, QCamera::LockStatus status, QCamera::LockChangeReason reason); - void errorOccurred(QCamera::Error); private: @@ -200,30 +153,15 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_preparePropertyChange(int)) Q_PRIVATE_SLOT(d_func(), void _q_restartCamera()) Q_PRIVATE_SLOT(d_func(), void _q_error(int, const QString &)) - Q_PRIVATE_SLOT(d_func(), void _q_updateLockStatus(QCamera::LockType, QCamera::LockStatus, QCamera::LockChangeReason)) Q_PRIVATE_SLOT(d_func(), void _q_updateState(QCamera::State)) friend class QCameraInfo; }; -Q_DECLARE_OPERATORS_FOR_FLAGS(QCamera::LockTypes) - QT_END_NAMESPACE -Q_DECLARE_METATYPE(QCamera::State) -Q_DECLARE_METATYPE(QCamera::Status) -Q_DECLARE_METATYPE(QCamera::Error) -Q_DECLARE_METATYPE(QCamera::CaptureMode) -Q_DECLARE_METATYPE(QCamera::CaptureModes) -Q_DECLARE_METATYPE(QCamera::LockType) -Q_DECLARE_METATYPE(QCamera::LockStatus) -Q_DECLARE_METATYPE(QCamera::LockChangeReason) - Q_MEDIA_ENUM_DEBUG(QCamera, State) Q_MEDIA_ENUM_DEBUG(QCamera, Status) Q_MEDIA_ENUM_DEBUG(QCamera, Error) Q_MEDIA_ENUM_DEBUG(QCamera, CaptureMode) -Q_MEDIA_ENUM_DEBUG(QCamera, LockType) -Q_MEDIA_ENUM_DEBUG(QCamera, LockStatus) -Q_MEDIA_ENUM_DEBUG(QCamera, LockChangeReason) #endif // QCAMERA_H diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h index de10b7d9a..5f1795f3e 100644 --- a/src/multimedia/camera/qcamera_p.h +++ b/src/multimedia/camera/qcamera_p.h @@ -74,9 +74,6 @@ public: capture(nullptr), state(QCamera::UnloadedState), error(QCamera::NoError), - requestedLocks(QCamera::NoLock), - lockStatus(QCamera::Unlocked), - lockChangeReason(QCamera::UserRequest), supressLockChangedSignal(false), restartPending(false) { @@ -103,10 +100,6 @@ public: QCameraInfo cameraInfo; - QCamera::LockTypes requestedLocks; - - QCamera::LockStatus lockStatus; - QCamera::LockChangeReason lockChangeReason; bool supressLockChangedSignal; bool restartPending; @@ -118,11 +111,9 @@ public: void setState(QCamera::State); - void _q_updateLockStatus(QCamera::LockType, QCamera::LockStatus, QCamera::LockChangeReason); void _q_updateState(QCamera::State newState); void _q_preparePropertyChange(int changeType); void _q_restartCamera(); - void updateLockStatus(); }; QT_END_NAMESPACE diff --git a/src/multimedia/controls/qcameracontrol.cpp b/src/multimedia/controls/qcameracontrol.cpp index 205f058df..9dcefd6ed 100644 --- a/src/multimedia/controls/qcameracontrol.cpp +++ b/src/multimedia/controls/qcameracontrol.cpp @@ -192,36 +192,6 @@ QCameraControl::QCameraControl(QObject *parent) */ /*! - \fn QCameraControl::supportedLocks() const - - Returns the lock types, the camera supports. -*/ - -/*! - \fn QCameraControl::lockStatus(QCamera::LockType lock) const - - Returns the camera \a lock status. -*/ - -/*! - \fn QCameraControl::searchAndLock(QCamera::LockTypes locks) - - Request camera \a locks. -*/ - -/*! - \fn QCameraControl::unlock(QCamera::LockTypes locks) - - Unlock camera \a locks. -*/ - -/*! - \fn QCameraControl::lockStatusChanged(QCamera::LockType lock, QCamera::LockStatus status, QCamera::LockChangeReason reason) - - Signals the lock \a type \a status was changed with the specified \a reason. -*/ - -/*! \fn QCameraControl::supportedViewfinderSettings() const Returns a list of supported camera viewfinder settings. diff --git a/src/multimedia/controls/qcameracontrol.h b/src/multimedia/controls/qcameracontrol.h index 8074381f0..bfe33b363 100644 --- a/src/multimedia/controls/qcameracontrol.h +++ b/src/multimedia/controls/qcameracontrol.h @@ -78,13 +78,6 @@ public: virtual bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const = 0; - virtual QCamera::LockTypes supportedLocks() const = 0; - - virtual QCamera::LockStatus lockStatus(QCamera::LockType lock) const = 0; - - virtual void searchAndLock(QCamera::LockTypes locks) = 0; - virtual void unlock(QCamera::LockTypes locks) = 0; - virtual QCameraFocusControl *focusControl() { return nullptr; } virtual QCameraExposureControl *exposureControl() { return nullptr; } virtual QCameraImageProcessingControl *imageProcessingControl() { return nullptr; } @@ -94,7 +87,6 @@ Q_SIGNALS: void statusChanged(QCamera::Status); void error(int error, const QString &errorString); void captureModeChanged(QCamera::CaptureModes mode); - void lockStatusChanged(QCamera::LockType type, QCamera::LockStatus status, QCamera::LockChangeReason reason); protected: explicit QCameraControl(QObject *parent = nullptr); diff --git a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp index 700ce2928..d1160d274 100644 --- a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp +++ b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol.cpp @@ -64,8 +64,6 @@ QAndroidCameraControl::QAndroidCameraControl(QAndroidCameraSession *session) connect(m_cameraSession, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged(QCamera::CaptureModes))); - connect(m_cameraSession, SIGNAL(opened()), this, SLOT(onCameraOpened())); - m_recalculateTimer = new QTimer(this); m_recalculateTimer->setInterval(1000); m_recalculateTimer->setSingleShot(true); @@ -135,109 +133,6 @@ bool QAndroidCameraControl::canChangeProperty(PropertyChangeType changeType, QCa } } - -QCamera::LockTypes QAndroidCameraControl::supportedLocks() const -{ - return m_supportedLocks; -} - -QCamera::LockStatus QAndroidCameraControl::lockStatus(QCamera::LockType lock) const -{ - if (!m_supportedLocks.testFlag(lock) || !m_cameraSession->camera()) - return QCamera::Unlocked; - - if (lock == QCamera::LockFocus) - return m_focusLockStatus; - - if (lock == QCamera::LockExposure) - return m_exposureLockStatus; - - if (lock == QCamera::LockWhiteBalance) - return m_whiteBalanceLockStatus; - - return QCamera::Unlocked; -} - -void QAndroidCameraControl::searchAndLock(QCamera::LockTypes locks) -{ - if (!m_cameraSession->camera()) - return; - - // filter out unsupported locks - locks &= m_supportedLocks; - - if (locks.testFlag(QCamera::LockFocus)) { - QString focusMode = m_cameraSession->camera()->getFocusMode(); - if (focusMode == QLatin1String("auto") - || focusMode == QLatin1String("macro") - || focusMode == QLatin1String("continuous-picture") - || focusMode == QLatin1String("continuous-video")) { - - if (m_focusLockStatus == QCamera::Searching) - m_cameraSession->camera()->cancelAutoFocus(); - else - setFocusLockStatus(QCamera::Searching, QCamera::UserRequest); - - m_cameraSession->camera()->autoFocus(); - - } else { - setFocusLockStatus(QCamera::Locked, QCamera::LockAcquired); - } - } - - if (locks.testFlag(QCamera::LockExposure) && m_exposureLockStatus != QCamera::Searching) { - if (m_cameraSession->camera()->getAutoExposureLock()) { - // if already locked, unlock and give some time to recalculate exposure - m_cameraSession->camera()->setAutoExposureLock(false); - setExposureLockStatus(QCamera::Searching, QCamera::UserRequest); - } else { - m_cameraSession->camera()->setAutoExposureLock(true); - setExposureLockStatus(QCamera::Locked, QCamera::LockAcquired); - } - } - - if (locks.testFlag(QCamera::LockWhiteBalance) && m_whiteBalanceLockStatus != QCamera::Searching) { - if (m_cameraSession->camera()->getAutoWhiteBalanceLock()) { - // if already locked, unlock and give some time to recalculate white balance - m_cameraSession->camera()->setAutoWhiteBalanceLock(false); - setWhiteBalanceLockStatus(QCamera::Searching, QCamera::UserRequest); - } else { - m_cameraSession->camera()->setAutoWhiteBalanceLock(true); - setWhiteBalanceLockStatus(QCamera::Locked, QCamera::LockAcquired); - } - } - - if (m_exposureLockStatus == QCamera::Searching || m_whiteBalanceLockStatus == QCamera::Searching) - m_recalculateTimer->start(); -} - -void QAndroidCameraControl::unlock(QCamera::LockTypes locks) -{ - if (!m_cameraSession->camera()) - return; - - if (m_recalculateTimer->isActive()) - m_recalculateTimer->stop(); - - // filter out unsupported locks - locks &= m_supportedLocks; - - if (locks.testFlag(QCamera::LockFocus)) { - m_cameraSession->camera()->cancelAutoFocus(); - setFocusLockStatus(QCamera::Unlocked, QCamera::UserRequest); - } - - if (locks.testFlag(QCamera::LockExposure)) { - m_cameraSession->camera()->setAutoExposureLock(false); - setExposureLockStatus(QCamera::Unlocked, QCamera::UserRequest); - } - - if (locks.testFlag(QCamera::LockWhiteBalance)) { - m_cameraSession->camera()->setAutoWhiteBalanceLock(false); - setWhiteBalanceLockStatus(QCamera::Unlocked, QCamera::UserRequest); - } -} - QCameraFocusControl *QAndroidCameraControl::focusControl() { return m_cameraSession->focusControl(); @@ -253,89 +148,4 @@ QCameraImageProcessingControl *QAndroidCameraControl::imageProcessingControl() return m_cameraSession->imageProcessingControl(); } -void QAndroidCameraControl::onCameraOpened() -{ - m_supportedLocks = QCamera::NoLock; - m_focusLockStatus = QCamera::Unlocked; - m_exposureLockStatus = QCamera::Unlocked; - m_whiteBalanceLockStatus = QCamera::Unlocked; - - // check if focus lock is supported - QStringList focusModes = m_cameraSession->camera()->getSupportedFocusModes(); - for (int i = 0; i < focusModes.size(); ++i) { - const QString &focusMode = focusModes.at(i); - if (focusMode == QLatin1String("auto") - || focusMode == QLatin1String("continuous-picture") - || focusMode == QLatin1String("continuous-video") - || focusMode == QLatin1String("macro")) { - - m_supportedLocks |= QCamera::LockFocus; - setFocusLockStatus(QCamera::Unlocked, QCamera::UserRequest); - - connect(m_cameraSession->camera(), SIGNAL(autoFocusComplete(bool)), - this, SLOT(onCameraAutoFocusComplete(bool))); - - break; - } - } - - if (m_cameraSession->camera()->isAutoExposureLockSupported()) { - m_supportedLocks |= QCamera::LockExposure; - setExposureLockStatus(QCamera::Unlocked, QCamera::UserRequest); - } - - if (m_cameraSession->camera()->isAutoWhiteBalanceLockSupported()) { - m_supportedLocks |= QCamera::LockWhiteBalance; - setWhiteBalanceLockStatus(QCamera::Unlocked, QCamera::UserRequest); - - connect(m_cameraSession->camera(), SIGNAL(whiteBalanceChanged()), - this, SLOT(onWhiteBalanceChanged())); - } -} - -void QAndroidCameraControl::onCameraAutoFocusComplete(bool success) -{ - m_focusLockStatus = success ? QCamera::Locked : QCamera::Unlocked; - QCamera::LockChangeReason reason = success ? QCamera::LockAcquired : QCamera::LockFailed; - emit lockStatusChanged(QCamera::LockFocus, m_focusLockStatus, reason); -} - -void QAndroidCameraControl::onRecalculateTimeOut() -{ - if (m_exposureLockStatus == QCamera::Searching) { - m_cameraSession->camera()->setAutoExposureLock(true); - setExposureLockStatus(QCamera::Locked, QCamera::LockAcquired); - } - - if (m_whiteBalanceLockStatus == QCamera::Searching) { - m_cameraSession->camera()->setAutoWhiteBalanceLock(true); - setWhiteBalanceLockStatus(QCamera::Locked, QCamera::LockAcquired); - } -} - -void QAndroidCameraControl::onWhiteBalanceChanged() -{ - // changing the white balance mode releases the white balance lock - if (m_whiteBalanceLockStatus != QCamera::Unlocked) - setWhiteBalanceLockStatus(QCamera::Unlocked, QCamera::LockLost); -} - -void QAndroidCameraControl::setFocusLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - m_focusLockStatus = status; - emit lockStatusChanged(QCamera::LockFocus, m_focusLockStatus, reason); -} - -void QAndroidCameraControl::setWhiteBalanceLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - m_whiteBalanceLockStatus = status; - emit lockStatusChanged(QCamera::LockWhiteBalance, m_whiteBalanceLockStatus, reason); -} - -void QAndroidCameraControl::setExposureLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - m_exposureLockStatus = status; - emit lockStatusChanged(QCamera::LockExposure, m_exposureLockStatus, reason); -} - QT_END_NAMESPACE diff --git a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h index d313db9fd..02b197616 100644 --- a/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h +++ b/src/multimedia/platform/android/mediacapture/qandroidcameracontrol_p.h @@ -78,35 +78,14 @@ public: bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override; - QCamera::LockTypes supportedLocks() const override; - QCamera::LockStatus lockStatus(QCamera::LockType lock) const override; - void searchAndLock(QCamera::LockTypes locks) override; - void unlock(QCamera::LockTypes locks) override; - QCameraFocusControl *focusControl() override; QCameraExposureControl *exposureControl() override; QCameraImageProcessingControl *imageProcessingControl() override; -private Q_SLOTS: - void onCameraOpened(); - void onCameraAutoFocusComplete(bool success); - void onRecalculateTimeOut(); - void onWhiteBalanceChanged(); - private: - void setFocusLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason); - void setWhiteBalanceLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason); - void setExposureLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason); - QAndroidCameraSession *m_cameraSession; QTimer *m_recalculateTimer; - - QCamera::LockTypes m_supportedLocks; - - QCamera::LockStatus m_focusLockStatus; - QCamera::LockStatus m_exposureLockStatus; - QCamera::LockStatus m_whiteBalanceLockStatus; }; QT_END_NAMESPACE diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm index ae492257e..77f394221 100644 --- a/src/multimedia/platform/darwin/camera/avfcameracontrol.mm +++ b/src/multimedia/platform/darwin/camera/avfcameracontrol.mm @@ -136,26 +136,6 @@ bool AVFCameraControl::canChangeProperty(QCameraControl::PropertyChangeType chan return true; } -QCamera::LockTypes AVFCameraControl::supportedLocks() const -{ - return {}; -} - -QCamera::LockStatus AVFCameraControl::lockStatus(QCamera::LockType) const -{ - return QCamera::Unlocked; -} - -void AVFCameraControl::searchAndLock(QCamera::LockTypes locks) -{ - Q_UNUSED(locks); -} - -void AVFCameraControl::unlock(QCamera::LockTypes locks) -{ - Q_UNUSED(locks); -} - QVideoFrame::PixelFormat AVFCameraControl::QtPixelFormatFromCVFormat(unsigned avPixelFormat) { // BGRA <-> ARGB "swap" is intentional: diff --git a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h index d0a7bba01..8c78a367c 100644 --- a/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h +++ b/src/multimedia/platform/darwin/camera/avfcameracontrol_p.h @@ -82,13 +82,6 @@ public: bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override; - QCamera::LockTypes supportedLocks() const override; - - QCamera::LockStatus lockStatus(QCamera::LockType lock) const override; - - void searchAndLock(QCamera::LockTypes locks) override; - void unlock(QCamera::LockTypes locks) override; - QCameraFocusControl *focusControl() override; QCameraExposureControl *exposureControl() override; QCameraImageProcessingControl *imageProcessingControl() override; diff --git a/src/multimedia/platform/gstreamer/camerabin/camerabincontrol.cpp b/src/multimedia/platform/gstreamer/camerabin/camerabincontrol.cpp index d303142ac..0b7b014f5 100644 --- a/src/multimedia/platform/gstreamer/camerabin/camerabincontrol.cpp +++ b/src/multimedia/platform/gstreamer/camerabin/camerabincontrol.cpp @@ -239,182 +239,4 @@ void CameraBinControl::setViewfinderColorSpaceConversion(bool enabled) g_object_set(G_OBJECT(m_session->cameraBin()), "flags", flags, NULL); } -QCamera::LockTypes CameraBinControl::supportedLocks() const -{ - QCamera::LockTypes locks = QCamera::LockFocus; - - if (GstPhotography *photography = m_session->photography()) { - if (gst_photography_get_capabilities(photography) & GST_PHOTOGRAPHY_CAPS_WB_MODE) - locks |= QCamera::LockWhiteBalance; - - if (GstElement *source = m_session->cameraSource()) { - if (g_object_class_find_property( - G_OBJECT_GET_CLASS(source), "exposure-mode")) { - locks |= QCamera::LockExposure; - } - } - } - - return locks; -} - -QCamera::LockStatus CameraBinControl::lockStatus(QCamera::LockType lock) const -{ - switch (lock) { - case QCamera::LockFocus: - return m_focus->focusStatus(); - case QCamera::LockExposure: - if (m_pendingLocks & QCamera::LockExposure) - return QCamera::Searching; - return isExposureLocked() ? QCamera::Locked : QCamera::Unlocked; - case QCamera::LockWhiteBalance: - if (m_pendingLocks & QCamera::LockWhiteBalance) - return QCamera::Searching; - return isWhiteBalanceLocked() ? QCamera::Locked : QCamera::Unlocked; - default: - return QCamera::Unlocked; - } -} - -void CameraBinControl::searchAndLock(QCamera::LockTypes locks) -{ - m_pendingLocks &= ~locks; - - if (locks & QCamera::LockFocus) { - m_pendingLocks |= QCamera::LockFocus; - m_focus->_q_startFocusing(); - } - if (!m_pendingLocks) - m_lockTimer.stop(); - - if (locks & QCamera::LockExposure) { - if (isExposureLocked()) { - unlockExposure(QCamera::Searching, QCamera::UserRequest); - m_pendingLocks |= QCamera::LockExposure; - m_lockTimer.start(1000, this); - } else { - lockExposure(QCamera::UserRequest); - } - } - if (locks & QCamera::LockWhiteBalance) { - if (isWhiteBalanceLocked()) { - unlockWhiteBalance(QCamera::Searching, QCamera::UserRequest); - m_pendingLocks |= QCamera::LockWhiteBalance; - m_lockTimer.start(1000, this); - } else { - lockWhiteBalance(QCamera::UserRequest); - } - } -} - -void CameraBinControl::unlock(QCamera::LockTypes locks) -{ - m_pendingLocks &= ~locks; - - if (locks & QCamera::LockFocus) - m_focus->_q_stopFocusing(); - - if (!m_pendingLocks) - m_lockTimer.stop(); - - if (locks & QCamera::LockExposure) - unlockExposure(QCamera::Unlocked, QCamera::UserRequest); - if (locks & QCamera::LockWhiteBalance) - unlockWhiteBalance(QCamera::Unlocked, QCamera::UserRequest); -} - -void CameraBinControl::updateFocusStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - if (status != QCamera::Searching) - m_pendingLocks &= ~QCamera::LockFocus; - - if (status == QCamera::Locked && !m_lockTimer.isActive()) { - if (m_pendingLocks & QCamera::LockExposure) - lockExposure(QCamera::LockAcquired); - if (m_pendingLocks & QCamera::LockWhiteBalance) - lockWhiteBalance(QCamera::LockAcquired); - } - emit lockStatusChanged(QCamera::LockFocus, status, reason); -} - -void CameraBinControl::timerEvent(QTimerEvent *event) -{ - if (event->timerId() != m_lockTimer.timerId()) - return QCameraControl::timerEvent(event); - - m_lockTimer.stop(); - - if (!(m_pendingLocks & QCamera::LockFocus)) { - if (m_pendingLocks & QCamera::LockExposure) - lockExposure(QCamera::LockAcquired); - if (m_pendingLocks & QCamera::LockWhiteBalance) - lockWhiteBalance(QCamera::LockAcquired); - } -} - -bool CameraBinControl::isExposureLocked() const -{ - if (GstElement *source = m_session->cameraSource()) { - GstPhotographyExposureMode exposureMode = GST_PHOTOGRAPHY_EXPOSURE_MODE_AUTO; - g_object_get (G_OBJECT(source), "exposure-mode", &exposureMode, NULL); - return exposureMode == GST_PHOTOGRAPHY_EXPOSURE_MODE_MANUAL; - } - - return false; -} - -void CameraBinControl::lockExposure(QCamera::LockChangeReason reason) -{ - GstElement *source = m_session->cameraSource(); - if (!source) - return; - - m_pendingLocks &= ~QCamera::LockExposure; - g_object_set( - G_OBJECT(source), - "exposure-mode", - GST_PHOTOGRAPHY_EXPOSURE_MODE_MANUAL, - NULL); - emit lockStatusChanged(QCamera::LockExposure, QCamera::Locked, reason); -} - -void CameraBinControl::unlockExposure(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - GstElement *source = m_session->cameraSource(); - if (!source) - return; - - g_object_set( - G_OBJECT(source), - "exposure-mode", - GST_PHOTOGRAPHY_EXPOSURE_MODE_AUTO, - NULL); - emit lockStatusChanged(QCamera::LockExposure, status, reason); -} - -bool CameraBinControl::isWhiteBalanceLocked() const -{ - if (GstPhotography *photography = m_session->photography()) { - GstPhotographyWhiteBalanceMode whiteBalanceMode; - return gst_photography_get_white_balance_mode(photography, &whiteBalanceMode) - && whiteBalanceMode == GST_PHOTOGRAPHY_WB_MODE_MANUAL; - } - - return false; -} - -void CameraBinControl::lockWhiteBalance(QCamera::LockChangeReason reason) -{ - m_pendingLocks &= ~QCamera::LockWhiteBalance; - m_session->imageProcessingControl()->lockWhiteBalance(); - emit lockStatusChanged(QCamera::LockWhiteBalance, QCamera::Locked, reason); -} - -void CameraBinControl::unlockWhiteBalance( - QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ - m_session->imageProcessingControl()->lockWhiteBalance(); - emit lockStatusChanged(QCamera::LockWhiteBalance, status, reason); -} - QT_END_NAMESPACE diff --git a/src/multimedia/platform/gstreamer/camerabin/camerabincontrol_p.h b/src/multimedia/platform/gstreamer/camerabin/camerabincontrol_p.h index 46f0a2934..0ea4ee73e 100644 --- a/src/multimedia/platform/gstreamer/camerabin/camerabincontrol_p.h +++ b/src/multimedia/platform/gstreamer/camerabin/camerabincontrol_p.h @@ -83,13 +83,6 @@ public: bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override; bool viewfinderColorSpaceConversion() const; - QCamera::LockTypes supportedLocks() const override; - - QCamera::LockStatus lockStatus(QCamera::LockType lock) const override; - - void searchAndLock(QCamera::LockTypes locks) override; - void unlock(QCamera::LockTypes locks) override; - public slots: void reloadLater(); void setViewfinderColorSpaceConversion(bool enabled); @@ -106,26 +99,12 @@ private: protected: void timerEvent(QTimerEvent *event) override; -private slots: - void updateFocusStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason); - -private: - bool isExposureLocked() const; - void lockExposure(QCamera::LockChangeReason reason); - void unlockExposure(QCamera::LockStatus status, QCamera::LockChangeReason reason); - - bool isWhiteBalanceLocked() const; - void lockWhiteBalance(QCamera::LockChangeReason reason); - void unlockWhiteBalance(QCamera::LockStatus status, QCamera::LockChangeReason reason); - CameraBinSession *m_session; QCamera::State m_state; bool m_reloadPending; CameraBinFocus *m_focus; - QBasicTimer m_lockTimer; - QCamera::LockTypes m_pendingLocks; }; QT_END_NAMESPACE diff --git a/src/multimedia/platform/gstreamer/camerabin/camerabinfocus.cpp b/src/multimedia/platform/gstreamer/camerabin/camerabinfocus.cpp index f795b0f2f..235bde6b5 100644 --- a/src/multimedia/platform/gstreamer/camerabin/camerabinfocus.cpp +++ b/src/multimedia/platform/gstreamer/camerabin/camerabinfocus.cpp @@ -248,72 +248,6 @@ QCameraFocusZoneList CameraBinFocus::focusZones() const return zones; } -void CameraBinFocus::handleFocusMessage(GstMessage *gm) -{ - //it's a sync message, so it's called from non main thread - const GstStructure *structure = gst_message_get_structure(gm); - if (gst_structure_has_name(structure, GST_PHOTOGRAPHY_AUTOFOCUS_DONE)) { - gint status = GST_PHOTOGRAPHY_FOCUS_STATUS_NONE; - gst_structure_get_int (structure, "status", &status); - QCamera::LockStatus focusStatus = m_focusStatus; - QCamera::LockChangeReason reason = QCamera::UserRequest; - - switch (status) { - case GST_PHOTOGRAPHY_FOCUS_STATUS_FAIL: - focusStatus = QCamera::Unlocked; - reason = QCamera::LockFailed; - break; - case GST_PHOTOGRAPHY_FOCUS_STATUS_SUCCESS: - focusStatus = QCamera::Locked; - break; - case GST_PHOTOGRAPHY_FOCUS_STATUS_NONE: - break; - case GST_PHOTOGRAPHY_FOCUS_STATUS_RUNNING: - focusStatus = QCamera::Searching; - break; - default: - break; - } - - static int signalIndex = metaObject()->indexOfSlot( - "_q_setFocusStatus(QCamera::LockStatus,QCamera::LockChangeReason)"); - metaObject()->method(signalIndex).invoke(this, - Qt::QueuedConnection, - Q_ARG(QCamera::LockStatus,focusStatus), - Q_ARG(QCamera::LockChangeReason,reason)); - } -} - -void CameraBinFocus::_q_setFocusStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason) -{ -#ifdef CAMERABIN_DEBUG - qDebug() << Q_FUNC_INFO << "Current:" - << m_focusStatus - << "New:" - << status << reason; -#endif - - if (m_focusStatus != status) { - m_focusStatus = status; - - QCameraFocusZone::FocusZoneStatus zonesStatus = - m_focusStatus == QCamera::Locked ? - QCameraFocusZone::Focused : QCameraFocusZone::Selected; - - if (m_focusZoneStatus != zonesStatus) { - m_focusZoneStatus = zonesStatus; - emit focusZonesChanged(); - } - - if (m_focusPointMode == QCameraFocus::FocusPointFaceDetection - && m_focusStatus == QCamera::Unlocked) { - _q_updateFaces(); - } - - emit _q_focusStatusChanged(m_focusStatus, reason); - } -} - void CameraBinFocus::_q_handleCameraStatusChange(QCamera::Status status) { m_cameraStatus = status; @@ -341,18 +275,6 @@ void CameraBinFocus::_q_handleCameraStatusChange(QCamera::Status status) } } -void CameraBinFocus::_q_startFocusing() -{ - _q_setFocusStatus(QCamera::Searching, QCamera::UserRequest); - gst_photography_set_autofocus(m_session->photography(), TRUE); -} - -void CameraBinFocus::_q_stopFocusing() -{ - gst_photography_set_autofocus(m_session->photography(), FALSE); - _q_setFocusStatus(QCamera::Unlocked, QCamera::UserRequest); -} - void CameraBinFocus::setViewfinderResolution(const QSize &resolution) { if (resolution != m_viewfinderResolution) { @@ -455,10 +377,8 @@ void CameraBinFocus::updateRegionOfInterest(const QList<QRect> &rectangles) void CameraBinFocus::_q_updateFaces() { - if (m_focusPointMode != QCameraFocus::FocusPointFaceDetection - || m_focusStatus != QCamera::Unlocked) { + if (m_focusPointMode != QCameraFocus::FocusPointFaceDetection) return; - } QList<QRect> faces; diff --git a/src/multimedia/platform/gstreamer/camerabin/camerabinfocus_p.h b/src/multimedia/platform/gstreamer/camerabin/camerabinfocus_p.h index 4ffef7a3a..4f18adbca 100644 --- a/src/multimedia/platform/gstreamer/camerabin/camerabinfocus_p.h +++ b/src/multimedia/platform/gstreamer/camerabin/camerabinfocus_p.h @@ -100,23 +100,12 @@ public: void zoomTo(qreal optical, qreal digital) override; - void handleFocusMessage(GstMessage*); - QCamera::LockStatus focusStatus() const { return m_focusStatus; } - -Q_SIGNALS: - void _q_focusStatusChanged(QCamera::LockStatus status, QCamera::LockChangeReason reason); - -public Q_SLOTS: - void _q_startFocusing(); - void _q_stopFocusing(); - void setViewfinderResolution(const QSize &resolution); protected: void timerEvent(QTimerEvent *event) override; private Q_SLOTS: - void _q_setFocusStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason); void _q_handleCameraStatusChange(QCamera::Status status); void _q_updateFaces(); @@ -130,7 +119,6 @@ private: QCamera::Status m_cameraStatus; QCameraFocus::FocusModes m_focusMode; QCameraFocus::FocusPointMode m_focusPointMode; - QCamera::LockStatus m_focusStatus; QCameraFocusZone::FocusZoneStatus m_focusZoneStatus; QPointF m_focusPoint; QRectF m_focusRect; diff --git a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h index 618439b4c..6a41aabc4 100644 --- a/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h +++ b/src/multimedia/platform/gstreamer/mediacapture/qgstreamercameracontrol_p.h @@ -81,16 +81,6 @@ public: bool canChangeProperty(PropertyChangeType changeType, QCamera::Status status) const override; - QCamera::LockTypes supportedLocks() const override - { - return QCamera::NoLock; - } - - QCamera::LockStatus lockStatus(QCamera::LockType /*lock*/) const override { return QCamera::Unlocked; } - - void searchAndLock(QCamera::LockTypes /*locks*/) override {} - void unlock(QCamera::LockTypes /*locks*/) override {} - public slots: void reloadLater(); diff --git a/src/multimedia/platform/qnx/camera/bbcameracontrol.cpp b/src/multimedia/platform/qnx/camera/bbcameracontrol.cpp index 423a5b8ac..bafa14c0c 100644 --- a/src/multimedia/platform/qnx/camera/bbcameracontrol.cpp +++ b/src/multimedia/platform/qnx/camera/bbcameracontrol.cpp @@ -53,7 +53,6 @@ BbCameraControl::BbCameraControl(BbCameraSession *session, QObject *parent) connect(m_session, SIGNAL(captureModeChanged(QCamera::CaptureModes)), this, SIGNAL(captureModeChanged(QCamera::CaptureModes))); connect(m_session, SIGNAL(cameraOpened()), SLOT(cameraOpened())); - connect(m_session, SIGNAL(focusStatusChanged(int)), SLOT(focusStatusChanged(int))); } QCamera::State BbCameraControl::state() const @@ -96,201 +95,8 @@ bool BbCameraControl::canChangeProperty(PropertyChangeType /* changeType */, QCa return false; } -QCamera::LockTypes BbCameraControl::supportedLocks() const -{ - return (QCamera::LockFocus | QCamera::LockExposure | QCamera::LockWhiteBalance); -} - -QCamera::LockStatus BbCameraControl::lockStatus(QCamera::LockType lock) const -{ - if (!m_supportedLockTypes.testFlag(lock) || (m_session->handle() == CAMERA_HANDLE_INVALID)) - return QCamera::Locked; - - switch (lock) { - case QCamera::LockExposure: - return m_exposureLockStatus; - case QCamera::LockWhiteBalance: - return m_whiteBalanceLockStatus; - case QCamera::LockFocus: - return m_focusLockStatus; - default: - return QCamera::Locked; - } -} - -void BbCameraControl::searchAndLock(QCamera::LockTypes locks) -{ - if (m_session->handle() == CAMERA_HANDLE_INVALID) - return; - - // filter out unsupported locks - locks &= m_supportedLockTypes; - - m_currentLockTypes |= locks; - - uint32_t lockModes = CAMERA_3A_NONE; - - switch (m_locksApplyMode) { - case IndependentMode: - if (m_currentLockTypes & QCamera::LockExposure) - lockModes |= CAMERA_3A_AUTOEXPOSURE; - if (m_currentLockTypes & QCamera::LockWhiteBalance) - lockModes |= CAMERA_3A_AUTOWHITEBALANCE; - if (m_currentLockTypes & QCamera::LockFocus) - lockModes |= CAMERA_3A_AUTOFOCUS; - break; - case FocusExposureBoundMode: - if ((m_currentLockTypes & QCamera::LockExposure) || (m_currentLockTypes & QCamera::LockFocus)) - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS); - break; - case AllBoundMode: - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOWHITEBALANCE); - break; - case FocusOnlyMode: - lockModes = CAMERA_3A_AUTOFOCUS; - break; - } - - const camera_error_t result = camera_set_3a_lock(m_session->handle(), lockModes); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to set lock modes:" << result; - } else { - if (lockModes & CAMERA_3A_AUTOFOCUS) { - // handled by focusStatusChanged() - } - - if (lockModes & CAMERA_3A_AUTOEXPOSURE) { - m_exposureLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockExposure, QCamera::Locked, QCamera::LockAcquired); - } - - if (lockModes & CAMERA_3A_AUTOWHITEBALANCE) { - m_whiteBalanceLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockWhiteBalance, QCamera::Locked, QCamera::LockAcquired); - } - } -} - -void BbCameraControl::unlock(QCamera::LockTypes locks) -{ - // filter out unsupported locks - locks &= m_supportedLockTypes; - - m_currentLockTypes &= ~locks; - - uint32_t lockModes = CAMERA_3A_NONE; - - switch (m_locksApplyMode) { - case IndependentMode: - if (m_currentLockTypes & QCamera::LockExposure) - lockModes |= CAMERA_3A_AUTOEXPOSURE; - if (m_currentLockTypes & QCamera::LockWhiteBalance) - lockModes |= CAMERA_3A_AUTOWHITEBALANCE; - if (m_currentLockTypes & QCamera::LockFocus) - lockModes |= CAMERA_3A_AUTOFOCUS; - break; - case FocusExposureBoundMode: - if ((m_currentLockTypes & QCamera::LockExposure) || (m_currentLockTypes & QCamera::LockFocus)) - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS); - break; - case AllBoundMode: - lockModes = (CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOWHITEBALANCE); - break; - case FocusOnlyMode: - lockModes = CAMERA_3A_AUTOFOCUS; - break; - } - - const camera_error_t result = camera_set_3a_lock(m_session->handle(), lockModes); - - if (result != CAMERA_EOK) { - qWarning() << "Unable to set lock modes:" << result; - } else { - if (locks.testFlag(QCamera::LockFocus)) { - // handled by focusStatusChanged() - } - - if (locks.testFlag(QCamera::LockExposure)) { - m_exposureLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockExposure, QCamera::Unlocked, QCamera::UserRequest); - } - - if (locks.testFlag(QCamera::LockWhiteBalance)) { - m_whiteBalanceLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockWhiteBalance, QCamera::Unlocked, QCamera::UserRequest); - } - } -} - void BbCameraControl::cameraOpened() { - // retrieve information about lock apply modes - int supported = 0; - uint32_t modes[20]; - - const camera_error_t result = camera_get_3a_lock_modes(m_session->handle(), 20, &supported, modes); - - if (result == CAMERA_EOK) { - // see API documentation of camera_get_3a_lock_modes for explanation of case discrimination below - if (supported == 4) { - m_locksApplyMode = IndependentMode; - } else if (supported == 3) { - m_locksApplyMode = FocusExposureBoundMode; - } else if (supported == 2) { - if (modes[0] == (CAMERA_3A_AUTOFOCUS | CAMERA_3A_AUTOEXPOSURE | CAMERA_3A_AUTOWHITEBALANCE)) - m_locksApplyMode = AllBoundMode; - else - m_locksApplyMode = FocusOnlyMode; - } - } - - // retrieve information about supported lock types - m_supportedLockTypes = QCamera::NoLock; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOFOCUS)) - m_supportedLockTypes |= QCamera::LockFocus; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOEXPOSURE)) - m_supportedLockTypes |= QCamera::LockExposure; - - if (camera_has_feature(m_session->handle(), CAMERA_FEATURE_AUTOWHITEBALANCE)) - m_supportedLockTypes |= QCamera::LockWhiteBalance; - - m_focusLockStatus = QCamera::Unlocked; - m_exposureLockStatus = QCamera::Unlocked; - m_whiteBalanceLockStatus = QCamera::Unlocked; -} - -void BbCameraControl::focusStatusChanged(int value) -{ - const camera_focusstate_t focusState = static_cast<camera_focusstate_t>(value); - - switch (focusState) { - case CAMERA_FOCUSSTATE_NONE: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::UserRequest); - break; - case CAMERA_FOCUSSTATE_WAITING: - case CAMERA_FOCUSSTATE_SEARCHING: - m_focusLockStatus = QCamera::Searching; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Searching, QCamera::UserRequest); - break; - case CAMERA_FOCUSSTATE_FAILED: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::LockFailed); - break; - case CAMERA_FOCUSSTATE_LOCKED: - m_focusLockStatus = QCamera::Locked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Locked, QCamera::LockAcquired); - break; - case CAMERA_FOCUSSTATE_SCENECHANGE: - m_focusLockStatus = QCamera::Unlocked; - emit lockStatusChanged(QCamera::LockFocus, QCamera::Unlocked, QCamera::LockTemporaryLost); - break; - default: - break; - } } QT_END_NAMESPACE diff --git a/src/multimedia/platform/qnx/camera/bbcameracontrol_p.h b/src/multimedia/platform/qnx/camera/bbcameracontrol_p.h index 277560c58..65996190e 100644 --- a/src/multimedia/platform/qnx/camera/bbcameracontrol_p.h +++ b/src/multimedia/platform/qnx/camera/bbcameracontrol_p.h @@ -83,25 +83,12 @@ public: FocusOnlyMode }; - QCamera::LockTypes supportedLocks() const override; - QCamera::LockStatus lockStatus(QCamera::LockType lock) const override; - void searchAndLock(QCamera::LockTypes locks) override; - void unlock(QCamera::LockTypes locks) override; - private Q_SLOTS: void cameraOpened(); - void focusStatusChanged(int value); private: BbCameraSession *m_session; - LocksApplyMode m_locksApplyMode = IndependentMode; - QCamera::LockStatus m_focusLockStatus = QCamera::Unlocked; - QCamera::LockStatus m_exposureLockStatus = QCamera::Unlocked; - QCamera::LockStatus m_whiteBalanceLockStatus = QCamera::Unlocked; - QCamera::LockTypes m_currentLockTypes = QCamera::NoLock; - QCamera::LockTypes m_supportedLockTypes = QCamera::NoLock; - private: BbCameraSession *m_session; }; diff --git a/tests/auto/unit/mockbackend/mockcameracontrol.h b/tests/auto/unit/mockbackend/mockcameracontrol.h index 5ca149391..c79aa9f9f 100644 --- a/tests/auto/unit/mockbackend/mockcameracontrol.h +++ b/tests/auto/unit/mockbackend/mockcameracontrol.h @@ -102,66 +102,6 @@ public: return m_propertyChangesSupported; } - QCamera::LockTypes supportedLocks() const - { - return QCamera::LockExposure | QCamera::LockFocus; - } - - QCamera::LockStatus lockStatus(QCamera::LockType lock) const - { - switch (lock) { - case QCamera::LockExposure: - return m_exposureLock; - case QCamera::LockFocus: - return m_focusLock; - default: - return QCamera::Unlocked; - } - } - - void searchAndLock(QCamera::LockTypes locks) - { - if (locks & QCamera::LockExposure) { - QCamera::LockStatus newStatus = locks & QCamera::LockFocus ? QCamera::Searching : QCamera::Locked; - - if (newStatus != m_exposureLock) - emit lockStatusChanged(QCamera::LockExposure, - m_exposureLock = newStatus, - QCamera::UserRequest); - } - - if (locks & QCamera::LockFocus) { - emit lockStatusChanged(QCamera::LockFocus, - m_focusLock = QCamera::Searching, - QCamera::UserRequest); - - QTimer::singleShot(5, this, SLOT(focused())); - } - } - - void unlock(QCamera::LockTypes locks) { - if (locks & QCamera::LockFocus && m_focusLock != QCamera::Unlocked) { - emit lockStatusChanged(QCamera::LockFocus, - m_focusLock = QCamera::Unlocked, - QCamera::UserRequest); - } - - if (locks & QCamera::LockExposure && m_exposureLock != QCamera::Unlocked) { - emit lockStatusChanged(QCamera::LockExposure, - m_exposureLock = QCamera::Unlocked, - QCamera::UserRequest); - } - } - - /* helper method to emit the signal with LockChangeReason */ - void setLockChangeReason (QCamera::LockChangeReason lockChangeReason) - { - emit lockStatusChanged(QCamera::NoLock, - QCamera::Unlocked, - lockChangeReason); - - } - /* helper method to emit the signal error */ void setError(QCamera::Error err, QString errorString) { @@ -186,28 +126,6 @@ public: QCamera::Status m_status; QCameraInfo m_camera; bool m_propertyChangesSupported; - - -private slots: - void focused() - { - if (m_focusLock == QCamera::Searching) { - emit lockStatusChanged(QCamera::LockFocus, - m_focusLock = QCamera::Locked, - QCamera::UserRequest); - } - - if (m_exposureLock == QCamera::Searching) { - emit lockStatusChanged(QCamera::LockExposure, - m_exposureLock = QCamera::Locked, - QCamera::UserRequest); - } - } - - -private: - QCamera::LockStatus m_focusLock = QCamera::Unlocked; - QCamera::LockStatus m_exposureLock = QCamera::Unlocked; }; diff --git a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp index 6a4ff377f..5d22e4432 100644 --- a/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp +++ b/tests/auto/unit/multimedia/qcamera/tst_qcamera.cpp @@ -68,7 +68,6 @@ private slots: void testSimpleCameraExposure(); void testSimpleCameraFocus(); void testSimpleCameraCapture(); - void testSimpleCameraLock(); void testSimpleCaptureDestination(); void testCameraWhiteBalance(); @@ -77,29 +76,20 @@ private slots: void testCameraCapture(); void testCameraCaptureMetadata(); void testImageSettings(); - void testCameraLock(); - void testCameraLockCancel(); void testCameraEncodingProperyChange(); void testCaptureDestination(); void testConstructor(); void testCaptureMode(); void testIsCaptureModeSupported(); - void testRequestedLocks(); - void testSupportedLocks(); void testQCameraIsAvailable(); void testQCameraIsNotAvailable(); - void testSearchAndLockWithLockTypes(); void testSetCaptureMode(); - void testUnlockWithType(); void testCaptureModeChangedSignal(); - void testLockStatusChangedWithTypesSignal(); void testErrorSignal(); void testError(); void testErrorString(); void testStatus(); - void testLockType(); - void testLockChangeReason(); // Test cases to for QCameraFocus @@ -297,44 +287,6 @@ void tst_QCamera::testSimpleCameraCapture() QVERIFY(!imageCapture.errorString().isEmpty()); } -void tst_QCamera::testSimpleCameraLock() -{ - MockMediaRecorderService::simpleCamera = true; - - QCamera camera; - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 0); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Unlocked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Unlocked); - - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 0); -} - void tst_QCamera::testSimpleCaptureDestination() { MockMediaRecorderService::simpleCamera = true; @@ -765,82 +717,6 @@ void tst_QCamera::testImageSettings() QVERIFY(settings1 != settings2); } -void tst_QCamera::testCameraLock() -{ - QCamera camera; - - camera.focus()->setFocusMode(QCameraFocus::AutoFocus); - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - QTRY_COMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); -} - -void tst_QCamera::testCameraLockCancel() -{ - QCamera camera; - - camera.focus()->setFocusMode(QCameraFocus::AutoFocus); - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Searching); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - - camera.unlock(); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); -} - void tst_QCamera::testCameraEncodingProperyChange() { QCamera camera; @@ -1009,14 +885,6 @@ void tst_QCamera::testEnumDebug() qDebug() << QCamera::CaptureVideo; QTest::ignoreMessage(QtDebugMsg, "QCamera::CameraError"); qDebug() << QCamera::CameraError; - QTest::ignoreMessage(QtDebugMsg, "QCamera::Unlocked"); - qDebug() << QCamera::Unlocked; - QTest::ignoreMessage(QtDebugMsg, "QCamera::LockAcquired"); - qDebug() << QCamera::LockAcquired; - QTest::ignoreMessage(QtDebugMsg, "QCamera::NoLock"); - qDebug() << QCamera::NoLock; - QTest::ignoreMessage(QtDebugMsg, "QCamera::LockExposure"); - qDebug() << QCamera::LockExposure; QTest::ignoreMessage(QtDebugMsg, "QCameraInfo::FrontFace "); qDebug() << QCameraInfo::FrontFace; } @@ -1119,45 +987,6 @@ void tst_QCamera::testIsCaptureModeSupported() QVERIFY(camera.isCaptureModeSupported(QCamera::CaptureVideo) == true); } -/* Test case for requestedLocks. LockType is stored in OR combination so all - types of combinations are verified here.*/ -void tst_QCamera::testRequestedLocks() -{ - QCamera camera; - - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); - - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure); - - camera.unlock(); - camera.searchAndLock(QCamera::LockFocus); - QCOMPARE(camera.requestedLocks(),QCamera::LockFocus ); - - camera.unlock(); - camera.searchAndLock(QCamera::LockWhiteBalance); - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); - - camera.unlock(); - camera.searchAndLock(QCamera::LockExposure |QCamera::LockFocus ); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure |QCamera::LockFocus ); - camera.searchAndLock(QCamera::LockWhiteBalance); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure |QCamera::LockFocus); - camera.unlock(QCamera::LockExposure); - QCOMPARE(camera.requestedLocks(),QCamera::LockFocus); - camera.unlock(QCamera::LockFocus); - camera.searchAndLock(QCamera::LockExposure |QCamera::LockWhiteBalance ); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure); -} - -/* Test case for supportedLocks() */ -void tst_QCamera::testSupportedLocks() -{ - QCamera camera; - - QCOMPARE(camera.supportedLocks(),QCamera::LockExposure | QCamera::LockFocus); -} - /* Test case for isAvailable */ void tst_QCamera::testQCameraIsAvailable() { @@ -1177,28 +1006,6 @@ void tst_QCamera::testQCameraIsNotAvailable() integration->setFlags({}); } -/* Test case for searchAndLock ( QCamera::LockTypes locks ) */ -void tst_QCamera::testSearchAndLockWithLockTypes() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signals */ - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* search and lock the camera with QCamera::LockExposure and verify if the signal is emitted correctly */ - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); -} - /* Test case for setCaptureMode() */ void tst_QCamera::testSetCaptureMode() { @@ -1212,70 +1019,6 @@ void tst_QCamera::testSetCaptureMode() QVERIFY(camera.captureMode() == QCamera::CaptureStillImage); } -/* Test case for unlock (QCamera::LockTypes) */ -void tst_QCamera::testUnlockWithType() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signal */ - QSignalSpy lockedSignal(&camera, SIGNAL(locked())); - QSignalSpy lockFailedSignal(&camera, SIGNAL(lockFailed())); - QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* lock the camera with QCamera::LockExposure and Verify if the signal is emitted correctly */ - camera.searchAndLock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - - /* Clear the signal */ - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera and verify if the signal is emitted correctly */ - camera.unlock(QCamera::LockExposure); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockType lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - QCamera::LockStatus lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Unlocked); - - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Lock the camera with QCamera::LockFocus */ - camera.searchAndLock(QCamera::LockFocus); - lockedSignal.clear(); - lockFailedSignal.clear(); - lockStatusChangedSignal.clear(); - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera and Verify if the signal is emitted correctly */ - camera.unlock(QCamera::LockFocus); - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockedSignal.count(), 0); - QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockFocus); - QVERIFY(lockStatus == QCamera::Unlocked); -} - /* Test case for signal captureModeChanged(QCamera::CaptureModes) */ void tst_QCamera::testCaptureModeChangedSignal() { @@ -1295,41 +1038,6 @@ void tst_QCamera::testCaptureModeChangedSignal() QVERIFY(lockCaptureMode == QCamera::CaptureVideo); } -/* Test case for signal lockStatusChanged(QCamera::LockType,QCamera::LockStatus, QCamera::LockChangeReason) */ -void tst_QCamera::testLockStatusChangedWithTypesSignal() -{ - QCamera camera; - - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - - /* Spy the signal lockStatusChanged(QCamera::LockType,QCamera::LockStatus, QCamera::LockChangeReason) */ - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* Lock the camera with type QCamera::LockExposure */ - camera.searchAndLock(QCamera::LockExposure); - - /* Verify if the signal is emitted and lock status is set correclty */ - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockType lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - QCamera::LockStatus lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Locked); - - lockStatusChangedSignalWithType.clear(); - - /* Unlock the camera */ - camera.unlock(); - - /* Verify if the signal is emitted and lock status is set correclty */ - QCOMPARE(camera.lockStatus(), QCamera::Unlocked); - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - lockType = qvariant_cast<QCamera::LockType >(lockStatusChangedSignalWithType.at(0).at(0)); - lockStatus = qvariant_cast<QCamera::LockStatus >(lockStatusChangedSignalWithType.at(0).at(1)); - QVERIFY(lockType == QCamera::LockExposure); - QVERIFY(lockStatus == QCamera::Unlocked); -} - /* Test case for verifying if error signal generated correctly */ void tst_QCamera::testErrorSignal() { @@ -1425,32 +1133,6 @@ void tst_QCamera::testStatus() QVERIFY(camera.status() == QCamera::UnavailableStatus); } -/* Test case for verifying default locktype QCamera::NoLock */ -void tst_QCamera::testLockType() -{ - QCamera camera; - - QCOMPARE(camera.requestedLocks(),QCamera::NoLock); -} - -/* Test case for QCamera::LockChangeReason with QCamera::LockAcquired */ -void tst_QCamera::testLockChangeReason() -{ - QCamera camera; - auto *service = integration->lastCaptureService(); - - QSignalSpy lockStatusChangedSignalWithType(&camera, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - - /* Set the lockChangeReason */ - service->mockCameraControl->setLockChangeReason(QCamera::LockAcquired); - - /* Verify if lockChangeReson is eqaul toQCamera::LockAcquired */ - QCOMPARE(lockStatusChangedSignalWithType.count(), 1); - QCamera::LockChangeReason LockChangeReason = qvariant_cast<QCamera::LockChangeReason >(lockStatusChangedSignalWithType.at(0).at(2)); - QVERIFY(LockChangeReason == QCamera::LockAcquired); - -} - /* All the enums test case for QCameraControl class*/ void tst_QCamera::testEnumsOfQCameraControl() { |