summaryrefslogtreecommitdiffstats
path: root/src/runtime/dragon/dragonrenderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/dragon/dragonrenderer.cpp')
-rw-r--r--src/runtime/dragon/dragonrenderer.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/runtime/dragon/dragonrenderer.cpp b/src/runtime/dragon/dragonrenderer.cpp
index 0745858..4b0301d 100644
--- a/src/runtime/dragon/dragonrenderer.cpp
+++ b/src/runtime/dragon/dragonrenderer.cpp
@@ -696,6 +696,28 @@ Renderer::Frame Renderer::doRender(Renderer::Frame frame)
return frame;
}
+void Renderer::beginShutdown()
+{
+ QMutexLocker lock(&m_latestDataMutex);
+
+ m_running.store(0);
+ m_latestData.clear();
+ nextFrameSemaphore.release();
+
+ if (m_renderThread) {
+ m_renderThread->wait();
+ } else {
+ Q_ASSERT(m_offscreenHelper->offscreenSurface());
+ m_glContext->makeCurrent(m_offscreenHelper->offscreenSurface());
+ }
+}
+
+void Renderer::endShutdown()
+{
+ if (!m_renderThread)
+ m_glContext->doneCurrent();
+}
+
RenderThread::RenderThread(Renderer *renderer)
: QThread()
, m_renderer(renderer)