From b2be54a179bbae560e2f95f10dae6b273a13f307 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Wed, 9 Mar 2016 11:32:37 -0800 Subject: [PATCH] Ensure we don't get trapped in the QML rendering loop on shutdown --- libraries/gl/src/gl/OffscreenQmlSurface.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.cpp b/libraries/gl/src/gl/OffscreenQmlSurface.cpp index d725d6b1ee..2088273e0e 100644 --- a/libraries/gl/src/gl/OffscreenQmlSurface.cpp +++ b/libraries/gl/src/gl/OffscreenQmlSurface.cpp @@ -326,6 +326,10 @@ OffscreenQmlSurface::~OffscreenQmlSurface() { void OffscreenQmlSurface::onAboutToQuit() { QObject::disconnect(&_updateTimer); + // Disconnecting the update timer is insufficient, since the renderer + // may attempting to render already, so we need to explicitly tell the renderer + // to stop + _renderer->aboutToQuit(); } void OffscreenQmlSurface::create(QOpenGLContext* shareContext) { @@ -486,6 +490,9 @@ void OffscreenQmlSurface::updateQuick() { QMutexLocker lock(&(_renderer->_mutex)); _renderer->post(RENDER); while (!_renderer->_cond.wait(&(_renderer->_mutex), 100)) { + if (_renderer->_quit) { + return; + } qApp->processEvents(); } _render = false;