From 56d430962a50af234902cd799920a5b6df6d80eb Mon Sep 17 00:00:00 2001 From: Ratchanan Srirattanamet Date: Wed, 25 Sep 2019 17:17:12 +0700 Subject: 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 --- src/imports/multimedia/qdeclarativecamera.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/imports') 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; } -- cgit v1.2.3