From 3e862950a8148ac9c7dc6fb947ad4faa7f9d5fe3 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 13 Aug 2019 15:47:59 -0700 Subject: [PATCH] BUGZ-1119: workaround for race condition crash in QML rendering --- libraries/qml/src/qml/impl/RenderEventHandler.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libraries/qml/src/qml/impl/RenderEventHandler.cpp b/libraries/qml/src/qml/impl/RenderEventHandler.cpp index cc9fe34edc..c2e69d5a9b 100644 --- a/libraries/qml/src/qml/impl/RenderEventHandler.cpp +++ b/libraries/qml/src/qml/impl/RenderEventHandler.cpp @@ -136,7 +136,6 @@ void RenderEventHandler::qmlRender(bool sceneGraphSync) { resize(); - if (_currentSize != QSize()) { PROFILE_RANGE(render_qml_gl, "render"); GLuint texture = SharedObject::getTextureCache().acquireTexture(_currentSize); @@ -148,7 +147,15 @@ void RenderEventHandler::qmlRender(bool sceneGraphSync) { } else { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); _shared->setRenderTarget(_fbo, _currentSize); - _shared->_renderControl->render(); + + // workaround for https://highfidelity.atlassian.net/browse/BUGZ-1119 + { + // Serialize QML rendering because of a crash caused by Qt bug + // https://bugreports.qt.io/browse/QTBUG-77469 + static std::mutex qmlRenderMutex; + std::unique_lock qmlRenderLock{ qmlRenderMutex }; + _shared->_renderControl->render(); + } } _shared->_lastRenderTime = usecTimestampNow(); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);