summaryrefslogtreecommitdiffstats
path: root/src/render/renderers
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-11-08 07:19:43 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-11-08 07:19:44 +0100
commit617e56756bbd8d547333c5cb2334d10950a0b0dd (patch)
tree8193b35a901cd2d927baf28ff3b9316235debd7e /src/render/renderers
parent0d9aee0c22fb6bc4ff57c03f54b67d2817e1e886 (diff)
parent726be38f774ea62c1f05003cca39fa2a68d794b0 (diff)
Merge remote-tracking branch 'origin/5.11' into 5.12
Diffstat (limited to 'src/render/renderers')
-rw-r--r--src/render/renderers/opengl/renderer/renderer.cpp11
-rw-r--r--src/render/renderers/opengl/textures/gltexture.cpp1
2 files changed, 7 insertions, 5 deletions
diff --git a/src/render/renderers/opengl/renderer/renderer.cpp b/src/render/renderers/opengl/renderer/renderer.cpp
index 8b98c658c..743c9a6a8 100644
--- a/src/render/renderers/opengl/renderer/renderer.cpp
+++ b/src/render/renderers/opengl/renderer/renderer.cpp
@@ -627,18 +627,21 @@ void Renderer::doRender(bool scene3dBlocking)
// Lock the mutex to protect access to the renderQueue while we look for its state
QMutexLocker locker(m_renderQueue->mutex());
bool queueIsComplete = m_renderQueue->isFrameQueueComplete();
- const bool queueIsEmpty = m_renderQueue->targetRenderViewCount() == 0;
+ bool queueIsEmpty = m_renderQueue->targetRenderViewCount() == 0;
// Scene3D Blocking Mode
if (scene3dBlocking && !queueIsComplete && !queueIsEmpty) {
int i = 0;
// We wait at most 10ms to avoid a case we could never recover from
- while (!queueIsComplete && i++ < 10) {
- QThread::msleep(1);
+ while (!queueIsComplete && !queueIsEmpty && i++ < 10) {
qCDebug(Backend) << Q_FUNC_INFO << "Waiting for ready queue (try:" << i << "/ 10)";
locker.unlock();
- queueIsComplete = m_renderQueue->isFrameQueueComplete();
+ // Give worker threads a chance to complete the queue
+ QThread::msleep(1);
locker.relock();
+ queueIsComplete = m_renderQueue->isFrameQueueComplete();
+ // This could become true if we've tried to shutdown
+ queueIsEmpty = m_renderQueue->targetRenderViewCount() == 0;
}
}
diff --git a/src/render/renderers/opengl/textures/gltexture.cpp b/src/render/renderers/opengl/textures/gltexture.cpp
index cb83e9c1e..227bdad68 100644
--- a/src/render/renderers/opengl/textures/gltexture.cpp
+++ b/src/render/renderers/opengl/textures/gltexture.cpp
@@ -408,7 +408,6 @@ QOpenGLTexture *GLTexture::buildGLTexture()
// Set layers count if texture array
if (m_actualTarget == QAbstractTexture::Target1DArray ||
m_actualTarget == QAbstractTexture::Target2DArray ||
- m_actualTarget == QAbstractTexture::Target3D ||
m_actualTarget == QAbstractTexture::Target2DMultisampleArray ||
m_actualTarget == QAbstractTexture::TargetCubeMapArray) {
glTex->setLayers(m_properties.layers);