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>
This commit is contained in:
committed by
The Qt Project
parent
15025088ea
commit
30078eeee1
@@ -151,6 +151,7 @@ class JCameraWorker : public QObject, public QJNIObjectPrivate
|
|||||||
friend class JCamera;
|
friend class JCamera;
|
||||||
|
|
||||||
JCameraWorker(JCamera *camera, int cameraId, jobject cam, QThread *workerThread);
|
JCameraWorker(JCamera *camera, int cameraId, jobject cam, QThread *workerThread);
|
||||||
|
~JCameraWorker();
|
||||||
|
|
||||||
Q_INVOKABLE void release();
|
Q_INVOKABLE void release();
|
||||||
|
|
||||||
@@ -275,9 +276,7 @@ JCamera::~JCamera()
|
|||||||
g_objectMap.remove(d->m_cameraId);
|
g_objectMap.remove(d->m_cameraId);
|
||||||
g_objectMapMutex.unlock();
|
g_objectMapMutex.unlock();
|
||||||
}
|
}
|
||||||
QThread *workerThread = d->m_workerThread;
|
|
||||||
d->deleteLater();
|
d->deleteLater();
|
||||||
workerThread->quit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JCamera *JCamera::open(int cameraId)
|
JCamera *JCamera::open(int cameraId)
|
||||||
@@ -372,7 +371,7 @@ void JCamera::setPreviewSize(const QSize &size)
|
|||||||
d->m_parametersMutex.lock();
|
d->m_parametersMutex.lock();
|
||||||
bool areParametersValid = d->m_parameters.isValid();
|
bool areParametersValid = d->m_parameters.isValid();
|
||||||
d->m_parametersMutex.unlock();
|
d->m_parametersMutex.unlock();
|
||||||
if (!areParametersValid || !size.isValid())
|
if (!areParametersValid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
d->m_previewSize = size;
|
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()
|
void JCameraWorker::release()
|
||||||
{
|
{
|
||||||
m_previewSize = QSize();
|
m_previewSize = QSize();
|
||||||
|
|||||||
Reference in New Issue
Block a user