diff options
Diffstat (limited to 'src/plugins/renderers/opengl/renderer/renderer.cpp')
-rw-r--r-- | src/plugins/renderers/opengl/renderer/renderer.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp index 55a9fa4e4..eca9172e7 100644 --- a/src/plugins/renderers/opengl/renderer/renderer.cpp +++ b/src/plugins/renderers/opengl/renderer/renderer.cpp @@ -534,7 +534,11 @@ void Renderer::shutdown() QMutexLocker lock(&m_hasBeenInitializedMutex); qCDebug(Backend) << Q_FUNC_INFO << "Requesting renderer shutdown"; - m_running.storeRelaxed(0); + const bool wasRunning = m_running.testAndSetRelaxed(1, 0); + + // We might have already been shutdown + if (!wasRunning) + return; // We delete any renderqueue that we may not have had time to render // before the surface was destroyed @@ -1699,7 +1703,7 @@ bool Renderer::shouldRender() const { // Only render if something changed during the last frame, or the last frame // was not rendered successfully (or render-on-demand is disabled) - return (m_settings->renderPolicy() == QRenderSettings::Always + return ((m_settings && m_settings->renderPolicy() == QRenderSettings::Always) || m_dirtyBits.marked != 0 || m_dirtyBits.remaining != 0 || !m_lastFrameCorrect.loadRelaxed()); |