diff options
author | Ratchanan Srirattanamet <peathot@hotmail.com> | 2019-09-25 17:17:12 +0700 |
---|---|---|
committer | Ratchanan Srirattanamet <peathot@hotmail.com> | 2019-10-08 16:45:08 +0700 |
commit | 56d430962a50af234902cd799920a5b6df6d80eb (patch) | |
tree | c349e436c4b0836215e2e80f9c8d970600a6fbe1 /src/imports/multimedia/qdeclarativecamera.cpp | |
parent | e9d8f6a181ad1c2fff622e894b0c8353838d9b7a (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>
Diffstat (limited to 'src/imports/multimedia/qdeclarativecamera.cpp')
-rw-r--r-- | src/imports/multimedia/qdeclarativecamera.cpp | 5 |
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; } |