summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRatchanan Srirattanamet <peathot@hotmail.com>2019-09-25 17:17:12 +0700
committerRatchanan Srirattanamet <peathot@hotmail.com>2019-10-08 16:45:08 +0700
commit56d430962a50af234902cd799920a5b6df6d80eb (patch)
treec349e436c4b0836215e2e80f9c8d970600a6fbe1
parente9d8f6a181ad1c2fff622e894b0c8353838d9b7a (diff)
Create QML camera.viewfinder eagerly
QDeclarativeCameraViewfinder connects to QCamera's statusChanged() to update its chached settings when the status becomes LoadedStatus or ActiveStatus. However, it's updated after QDeclarativeCamera has signaled cameraStatusChanged because QDeclarativeCameraViewfinder connects the that signal after QDeclarativeCamera, making those connected to cameraSignalChanged still receiving old values despite camera.cameraStatus already changed. This commit moves the creation of QDeclarativeCameraViewfinder into the constructor of QDeclarativeCamera, before the later connects to signals. This make values in camera.viewfinder reflects the correct value by the time cameraStatusChanged is signaled. A side effect of this change is that camera.viewfinder.resolutionChanged and similar signals will be signaled before camera.cameraStatusChanged. This might not be as bad as it seems; if the user of resolutionChanged checks camera.cameraStatus, the value will be correct anyway as it's not cached. Change-Id: Ief0c3d55e441cc872d37de937ba54fed0f2b877d Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
-rw-r--r--src/imports/multimedia/qdeclarativecamera.cpp5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp
index 6d36e462d..91bda2ea2 100644
--- a/src/imports/multimedia/qdeclarativecamera.cpp
+++ b/src/imports/multimedia/qdeclarativecamera.cpp
@@ -177,7 +177,6 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
QObject(parent),
m_camera(0),
m_metaData(0),
- m_viewfinder(0),
m_pendingState(ActiveState),
m_componentComplete(false)
{
@@ -190,6 +189,7 @@ QDeclarativeCamera::QDeclarativeCamera(QObject *parent) :
m_flash = new QDeclarativeCameraFlash(m_camera);
m_focus = new QDeclarativeCameraFocus(m_camera);
m_imageProcessing = new QDeclarativeCameraImageProcessing(m_camera);
+ m_viewfinder = new QDeclarativeCameraViewfinder(m_camera);
connect(m_camera, SIGNAL(captureModeChanged(QCamera::CaptureModes)),
this, SIGNAL(captureModeChanged()));
@@ -960,9 +960,6 @@ QDeclarativeMediaMetaData *QDeclarativeCamera::metaData()
QDeclarativeCameraViewfinder *QDeclarativeCamera::viewfinder()
{
- if (!m_viewfinder)
- m_viewfinder = new QDeclarativeCameraViewfinder(m_camera);
-
return m_viewfinder;
}