summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-01-12 14:04:40 +0100
committerBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-01-12 13:39:53 +0000
commite08d5348459fa9fbb67404ffd0c3c6ba818ebe75 (patch)
treeb1876126cffb71d873367645ced2dc3168dffd64 /src/plugins
parent24eb3e2a8859eeff73c4954ff2a3d366a7ab0511 (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. Pick-to: 6.5 6.4 Fixes: QTBUG-109561 Fixes: QTBUG-109391 Change-Id: Ie6a7bbd332fb42f1aba4fea53449ecac082aaf89 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/plugins')
-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()