diff options
-rw-r--r-- | src/multimedia/camera/qcamera.cpp | 34 | ||||
-rw-r--r-- | src/multimedia/camera/qcamera_p.h | 2 | ||||
-rw-r--r-- | tests/auto/unit/qcamera/tst_qcamera.cpp | 22 |
3 files changed, 26 insertions, 32 deletions
diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index 22a778ac4..6ba106f41 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -163,8 +163,6 @@ void QCameraPrivate::initControls() { Q_Q(QCamera); - supportedLocks = 0; - if (service) { control = qobject_cast<QCameraControl *>(service->requestControl(QCameraControl_iid)); locksControl = qobject_cast<QCameraLocksControl *>(service->requestControl(QCameraLocksControl_iid)); @@ -183,7 +181,6 @@ void QCameraPrivate::initControls() if (locksControl) { q->connect(locksControl, SIGNAL(lockStatusChanged(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason)), q, SLOT(_q_updateLockStatus(QCamera::LockType,QCamera::LockStatus,QCamera::LockChangeReason))); - supportedLocks = locksControl->supportedLocks(); } error = QCamera::NoError; @@ -225,7 +222,6 @@ void QCameraPrivate::clear() deviceControl = 0; infoControl = 0; service = 0; - supportedLocks = 0; } void QCameraPrivate::updateLockStatus() @@ -236,8 +232,8 @@ void QCameraPrivate::updateLockStatus() QMap<QCamera::LockStatus, int> lockStatusPriority; lockStatusPriority.insert(QCamera::Locked, 1); - lockStatusPriority.insert(QCamera::Searching, 2); - lockStatusPriority.insert(QCamera::Unlocked, 3); + lockStatusPriority.insert(QCamera::Unlocked, 2); + lockStatusPriority.insert(QCamera::Searching, 3); lockStatus = requestedLocks ? QCamera::Locked : QCamera::Unlocked; int priority = 0; @@ -673,7 +669,11 @@ QCamera::Status QCamera::status() const */ QCamera::LockTypes QCamera::supportedLocks() const { - return d_func()->supportedLocks; + Q_D(const QCamera); + + return d->locksControl + ? d->locksControl->supportedLocks() + : QCamera::LockTypes(); } /*! @@ -699,16 +699,13 @@ QCamera::LockStatus QCamera::lockStatus(QCamera::LockType lockType) const { const QCameraPrivate *d = d_func(); - if (!(lockType & d->supportedLocks)) - return lockType & d->requestedLocks ? QCamera::Locked : QCamera::Unlocked; - if (!(lockType & d->requestedLocks)) return QCamera::Unlocked; if (d->locksControl) return d->locksControl->lockStatus(lockType); - return QCamera::Unlocked; + return QCamera::Locked; } /*! @@ -743,12 +740,11 @@ void QCamera::searchAndLock(QCamera::LockTypes locks) QCamera::LockStatus oldStatus = d->lockStatus; d->supressLockChangedSignal = true; - d->requestedLocks |= locks; - - locks &= d->supportedLocks; - - if (d->locksControl) + if (d->locksControl) { + locks &= d->locksControl->supportedLocks(); + d->requestedLocks |= locks; d->locksControl->searchAndLock(locks); + } d->supressLockChangedSignal = false; @@ -776,10 +772,10 @@ void QCamera::unlock(QCamera::LockTypes locks) d->requestedLocks &= ~locks; - locks &= d->supportedLocks; - - if (d->locksControl) + if (d->locksControl) { + locks &= d->locksControl->supportedLocks(); d->locksControl->unlock(locks); + } d->supressLockChangedSignal = false; diff --git a/src/multimedia/camera/qcamera_p.h b/src/multimedia/camera/qcamera_p.h index 630cae166..d43c510bc 100644 --- a/src/multimedia/camera/qcamera_p.h +++ b/src/multimedia/camera/qcamera_p.h @@ -72,7 +72,6 @@ public: capture(0), state(QCamera::UnloadedState), error(QCamera::NoError), - supportedLocks(QCamera::NoLock), requestedLocks(QCamera::NoLock), lockStatus(QCamera::Unlocked), lockChangeReason(QCamera::UserRequest), @@ -105,7 +104,6 @@ public: QCamera::Error error; QString errorString; - QCamera::LockTypes supportedLocks; QCamera::LockTypes requestedLocks; QCamera::LockStatus lockStatus; diff --git a/tests/auto/unit/qcamera/tst_qcamera.cpp b/tests/auto/unit/qcamera/tst_qcamera.cpp index 48260ca94..6d3979dfc 100644 --- a/tests/auto/unit/qcamera/tst_qcamera.cpp +++ b/tests/auto/unit/qcamera/tst_qcamera.cpp @@ -344,13 +344,13 @@ void tst_QCamera::testSimpleCameraLock() QSignalSpy lockStatusChangedSignal(&camera, SIGNAL(lockStatusChanged(QCamera::LockStatus,QCamera::LockChangeReason))); camera.searchAndLock(); - QCOMPARE(camera.lockStatus(), QCamera::Locked); - QCOMPARE(camera.lockStatus(QCamera::LockExposure), QCamera::Locked); - QCOMPARE(camera.lockStatus(QCamera::LockFocus), QCamera::Locked); - QCOMPARE(camera.lockStatus(QCamera::LockWhiteBalance), QCamera::Locked); - QCOMPARE(lockedSignal.count(), 1); + 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(), 1); + QCOMPARE(lockStatusChangedSignal.count(), 0); lockedSignal.clear(); lockFailedSignal.clear(); @@ -364,7 +364,7 @@ void tst_QCamera::testSimpleCameraLock() QCOMPARE(lockedSignal.count(), 0); QCOMPARE(lockFailedSignal.count(), 0); - QCOMPARE(lockStatusChangedSignal.count(), 1); + QCOMPARE(lockStatusChangedSignal.count(), 0); } void tst_QCamera::testSimpleCaptureDestination() @@ -1264,18 +1264,18 @@ void tst_QCamera::testRequestedLocks() camera.unlock(); camera.searchAndLock(QCamera::LockWhiteBalance); - QCOMPARE(camera.requestedLocks(),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|QCamera::LockWhiteBalance ); + QCOMPARE(camera.requestedLocks(),QCamera::LockExposure |QCamera::LockFocus); camera.unlock(QCamera::LockExposure); - QCOMPARE(camera.requestedLocks(),QCamera::LockFocus|QCamera::LockWhiteBalance ); + QCOMPARE(camera.requestedLocks(),QCamera::LockFocus); camera.unlock(QCamera::LockFocus); camera.searchAndLock(QCamera::LockExposure |QCamera::LockWhiteBalance ); - QCOMPARE(camera.requestedLocks(),QCamera::LockExposure|QCamera::LockWhiteBalance ); + QCOMPARE(camera.requestedLocks(),QCamera::LockExposure); } /* Test case for supportedLocks() */ |