diff options
Diffstat (limited to 'src/quick/scenegraph/qsgthreadedrenderloop.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgthreadedrenderloop.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp index 4543782d5b..5fa74027c1 100644 --- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp +++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp @@ -280,7 +280,7 @@ public: , stopEventProcessing(false) { sgrc = static_cast<QSGDefaultRenderContext *>(renderContext); -#if defined(Q_OS_QNX) && !defined(Q_OS_BLACKBERRY) && defined(Q_PROCESSOR_X86) +#if defined(Q_OS_QNX) && defined(Q_PROCESSOR_X86) // The SDP 6.6.0 x86 MESA driver requires a larger stack than the default. setStackSize(1024 * 1024); #endif @@ -826,13 +826,14 @@ void QSGThreadedRenderLoop::startOrStopAnimationTimer() } if (m_animation_timer != 0 && (exposedWindows == 1 || !m_animation_driver->isRunning())) { + qCDebug(QSG_LOG_RENDERLOOP) << "*** Stopping animation timer"; killTimer(m_animation_timer); m_animation_timer = 0; // If animations are running, make sure we keep on animating if (m_animation_driver->isRunning()) maybePostPolishRequest(const_cast<Window *>(theOne)); - } else if (m_animation_timer == 0 && exposedWindows != 1 && m_animation_driver->isRunning()) { + qCDebug(QSG_LOG_RENDERLOOP) << "*** Starting animation timer"; m_animation_timer = startTimer(qsgrl_animation_interval()); } } @@ -888,6 +889,11 @@ void QSGThreadedRenderLoop::windowDestroyed(QQuickWindow *window) } } + // Now that we altered the window list, we may need to stop the animation + // timer even if we didn't via handleObscurity. This covers the case where + // we destroy a visible & exposed QQuickWindow. + startOrStopAnimationTimer(); + qCDebug(QSG_LOG_RENDERLOOP) << "done windowDestroyed()" << window; } |