diff options
author | Yoann Lopes <yoann.lopes@digia.com> | 2014-01-15 18:35:07 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-16 17:24:56 +0100 |
commit | 30078eeee13b60af65deb14a6ac1d6deca53003c (patch) | |
tree | 7acaca5ea6947eb60da5134ca377720ff31adaed /src | |
parent | 15025088eac53d97705191d06b13868d62977155 (diff) |
Android: fixes some issues with JCamera.
- Quit the worker thread only when the worker is deleted. This makes
sure all events are processed before terminating the worker.
- Correctly cache the preview size even when it's an invalid one.
Task-number: QTBUG-36204
Change-Id: I76055984e8ece3f7f40dba7dd89d28a4faa1e72e
Reviewed-by: Denis Kormalev <dkormalev@ics.com>
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/src/wrappers/jcamera.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/plugins/android/src/wrappers/jcamera.cpp b/src/plugins/android/src/wrappers/jcamera.cpp index d24a59a38..3a0585f31 100644 --- a/src/plugins/android/src/wrappers/jcamera.cpp +++ b/src/plugins/android/src/wrappers/jcamera.cpp @@ -151,6 +151,7 @@ class JCameraWorker : public QObject, public QJNIObjectPrivate friend class JCamera; JCameraWorker(JCamera *camera, int cameraId, jobject cam, QThread *workerThread); + ~JCameraWorker(); Q_INVOKABLE void release(); @@ -275,9 +276,7 @@ JCamera::~JCamera() g_objectMap.remove(d->m_cameraId); g_objectMapMutex.unlock(); } - QThread *workerThread = d->m_workerThread; d->deleteLater(); - workerThread->quit(); } JCamera *JCamera::open(int cameraId) @@ -372,7 +371,7 @@ void JCamera::setPreviewSize(const QSize &size) d->m_parametersMutex.lock(); bool areParametersValid = d->m_parameters.isValid(); d->m_parametersMutex.unlock(); - if (!areParametersValid || !size.isValid()) + if (!areParametersValid) return; d->m_previewSize = size; @@ -661,6 +660,11 @@ JCameraWorker::JCameraWorker(JCamera *camera, int cameraId, jobject cam, QThread } } +JCameraWorker::~JCameraWorker() +{ + m_workerThread->quit(); +} + void JCameraWorker::release() { m_previewSize = QSize(); |