diff options
author | Bartlomiej Moskal <bartlomiej.moskal@qt.io> | 2023-01-12 14:04:40 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-01-12 15:08:54 +0000 |
commit | fd0c9671013ecd4687224e6f40422fcca225a35e (patch) | |
tree | c579b56801cbd0eb339c94a2d8337f929f4639a2 | |
parent | 0d92f06831407b52d25273f2572fc91ca90ac5ec (diff) |
Android: fix for randomly not working camera
After commit: 2abfa1e5cd3cbb148305dc0fe85671488a542397, there was a
thread race in QAndroidCameraSession. Calling setVideoSize put
setFrameSize method to queue (which resets a viewport). It happened from
time to time that source texture coordinates was calculated with not
ready viewport.
To avoid this situation setFrameSize will be queued as
BlockingQueuedConnection.
Fixes: QTBUG-109561
Fixes: QTBUG-109391
Change-Id: Ie6a7bbd332fb42f1aba4fea53449ecac082aaf89
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
(cherry picked from commit e08d5348459fa9fbb67404ffd0c3c6ba818ebe75)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/plugins/multimedia/android/common/qandroidvideooutput.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/plugins/multimedia/android/common/qandroidvideooutput.cpp b/src/plugins/multimedia/android/common/qandroidvideooutput.cpp index 7cd0c9242..62959dba9 100644 --- a/src/plugins/multimedia/android/common/qandroidvideooutput.cpp +++ b/src/plugins/multimedia/android/common/qandroidvideooutput.cpp @@ -380,7 +380,9 @@ void QAndroidTextureVideoOutput::setVideoSize(const QSize &size) return; m_nativeSize = size; - QMetaObject::invokeMethod(m_surfaceThread.get(), [&](){ m_surfaceThread->setFrameSize(size); }); + QMetaObject::invokeMethod(m_surfaceThread.get(), + [&](){ m_surfaceThread->setFrameSize(size); }, + Qt::BlockingQueuedConnection); } void QAndroidTextureVideoOutput::stop() |