summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYoann Lopes <yoann.lopes@digia.com>2014-01-15 18:35:07 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-16 17:24:56 +0100
commit30078eeee13b60af65deb14a6ac1d6deca53003c (patch)
tree7acaca5ea6947eb60da5134ca377720ff31adaed
parent15025088eac53d97705191d06b13868d62977155 (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>
-rw-r--r--src/plugins/android/src/wrappers/jcamera.cpp10
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();