From 701f215813f1059a1a03200f42e70e57ef6e3699 Mon Sep 17 00:00:00 2001 From: Mohammed Sameer Date: Sat, 17 Aug 2013 18:59:22 +0300 Subject: [PATCH] Prevent changing any camera properties while device change is in progress --- qml/CameraView.qml | 28 ++++++++++++++-------------- qml/MainPage.qml | 7 +++++++ src/settings.cpp | 2 ++ src/settings.h | 1 + 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/qml/CameraView.qml b/qml/CameraView.qml index 404db9e..0cb80c1 100644 --- a/qml/CameraView.qml +++ b/qml/CameraView.qml @@ -157,98 +157,98 @@ Viewfinder { Binding { target: cam.flash property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageFlashMode } Binding { target: settings property: "imageFlashMode" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: cam.flash.value } Binding { target: cam.scene property: "value" - when: cam.mode == Camera.VideoMode + when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress value: settings.videoSceneMode } Binding { target: cam.scene property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageSceneMode } Binding { target: cam.evComp property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageEvComp } Binding { target: cam.evComp property: "value" - when: cam.mode == Camera.VideoMode + when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress value: settings.videoEvComp } Binding { target: settings property: "imageEvComp" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: cam.evComp.value } Binding { target: settings property: "videoEvComp" - when: cam.mode == Camera.VideoMode + when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress value: cam.evComp.value } Binding { target: cam.whiteBalance property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageWhiteBalance } Binding { target: cam.whiteBalance property: "value" - when: cam.mode == Camera.VideoMode + when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress value: settings.videoWhiteBalance } Binding { target: cam.colorTone property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageColorFilter } Binding { target: cam.colorTone property: "value" - when: cam.mode == Camera.VideoMode + when: cam.mode == Camera.VideoMode && !root.deviceChangeInProgress value: settings.videoColorFilter } Binding { target: cam.iso property: "value" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: settings.imageIso } Binding { target: settings property: "imageIso" - when: cam.mode == Camera.ImageMode + when: cam.mode == Camera.ImageMode && !root.deviceChangeInProgress value: cam.iso.value } diff --git a/qml/MainPage.qml b/qml/MainPage.qml index 90ab26e..bf98add 100644 --- a/qml/MainPage.qml +++ b/qml/MainPage.qml @@ -30,6 +30,8 @@ import CameraPlus 1.0 CameraPage { id: root + property bool deviceChangeInProgress: false + CameraTheme { id: cameraTheme } @@ -80,6 +82,10 @@ CameraPage { Settings { id: settings + onDeviceAboutToChange: { + root.deviceChangeInProgress = true + } + onDeviceChanged: { viewfinder.cameraDeviceChanged() @@ -87,6 +93,7 @@ CameraPage { pipelineManager.error = false if (root.resetCamera(settings.device, settings.mode)) { + root.deviceChangeInProgress = false pipelineManager.startCamera() } } diff --git a/src/settings.cpp b/src/settings.cpp index 7d7950c..7cafca0 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -170,6 +170,8 @@ int Settings::device() const { void Settings::setDevice(int device) { if (device != Settings::device()) { + emit deviceAboutToChange(); + m_settings->setValue("camera/device", device); delete m_device; m_device = 0; diff --git a/src/settings.h b/src/settings.h index 2ec2558..e5a8500 100644 --- a/src/settings.h +++ b/src/settings.h @@ -174,6 +174,7 @@ signals: void gridEnabledChanged(); void faceDetectionEnabledChanged(); void zoomAsShutterChanged(); + void deviceAboutToChange(); void deviceChanged(); private: -- 2.25.1