diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-08 07:19:43 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-11-08 07:19:44 +0100 |
commit | 617e56756bbd8d547333c5cb2334d10950a0b0dd (patch) | |
tree | 8193b35a901cd2d927baf28ff3b9316235debd7e /src/render/renderers | |
parent | 0d9aee0c22fb6bc4ff57c03f54b67d2817e1e886 (diff) | |
parent | 726be38f774ea62c1f05003cca39fa2a68d794b0 (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Change-Id: Ia208586ec402c9ce29bafc9085804d8b1a62b155
Diffstat (limited to 'src/render/renderers')
-rw-r--r-- | src/render/renderers/opengl/renderer/renderer.cpp | 11 | ||||
-rw-r--r-- | src/render/renderers/opengl/textures/gltexture.cpp | 1 |
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); |