summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-01-12 14:04:40 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2023-01-12 15:08:54 +0000
commitfd0c9671013ecd4687224e6f40422fcca225a35e (patch)
treec579b56801cbd0eb339c94a2d8337f929f4639a2
parent0d92f06831407b52d25273f2572fc91ca90ac5ec (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.cpp4
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()