m_vf->setDevice(m_dev);
- if (m_mode == Camera::VideoMode) {
- m_dev->videoMode()->activate();
- }
- else {
- m_dev->imageMode()->activate();
- }
-
QObject::connect(m_dev, SIGNAL(runningStateChanged(bool)),
this, SIGNAL(runningStateChanged()));
QObject::connect(m_dev, SIGNAL(idleStateChanged(bool)), this, SIGNAL(idleStateChanged()));
}
void Camera::setMode(const Camera::CameraMode& mode) {
- m_mode = mode;
-
- if (!m_dev) {
+ if (m_mode == mode) {
return;
}
- Camera::CameraMode current = m_dev->activeMode() == m_dev->videoMode() ?
- Camera::VideoMode : Camera::ImageMode;
+ m_mode = mode;
- if (current == mode) {
+ if (!m_dev) {
return;
}
- if (mode == Camera::VideoMode) {
- m_dev->videoMode()->activate();
- }
- else {
- m_dev->imageMode()->activate();
+ if (m_dev->isRunning()) {
+ applyMode();
}
emit modeChanged();
}
bool Camera::start() {
- return m_dev ? m_dev->start() : false;
+ if (!m_dev) {
+ return false;
+ }
+
+ applyMode();
+
+ return m_dev->start();
}
void Camera::stop() {
bool Camera::isRunning() {
return m_dev ? m_dev->isRunning() : false;
}
+
+void Camera::applyMode() {
+ if (m_mode == Camera::VideoMode && m_dev->activeMode() != m_dev->videoMode()) {
+ m_dev->videoMode()->activate();
+ }
+ else if (m_mode == Camera::ImageMode && m_dev->activeMode() != m_dev->imageMode()) {
+ m_dev->imageMode()->activate();
+ }
+}