summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/multimedia/camera/qcamera.cpp34
-rw-r--r--src/multimedia/camera/qcamera_p.h2
-rw-r--r--tests/auto/unit/qcamera/tst_qcamera.cpp22
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() */