summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/compositor/display_gl_output_surface.cpp1
-rw-r--r--src/core/compositor/display_gl_output_surface.h1
-rw-r--r--src/core/compositor/display_gl_output_surface_qsg.cpp3
3 files changed, 4 insertions, 1 deletions
diff --git a/src/core/compositor/display_gl_output_surface.cpp b/src/core/compositor/display_gl_output_surface.cpp
index a75daf222..370eb07e6 100644
--- a/src/core/compositor/display_gl_output_surface.cpp
+++ b/src/core/compositor/display_gl_output_surface.cpp
@@ -210,6 +210,7 @@ void DisplayGLOutputSurface::swapBuffersOnGpuThread(unsigned int id, std::unique
QMutexLocker locker(&m_mutex);
m_middleBuffer->serviceId = id;
m_middleBuffer->fence = CompositorResourceFence::create(std::move(fence));
+ m_readyToUpdate = true;
}
m_sink->scheduleUpdate();
diff --git a/src/core/compositor/display_gl_output_surface.h b/src/core/compositor/display_gl_output_surface.h
index c9c9343ae..d2e203b4e 100644
--- a/src/core/compositor/display_gl_output_surface.h
+++ b/src/core/compositor/display_gl_output_surface.h
@@ -141,6 +141,7 @@ private:
std::unique_ptr<Buffer> m_backBuffer;
std::unique_ptr<Buffer> m_middleBuffer;
std::unique_ptr<Buffer> m_frontBuffer;
+ bool m_readyToUpdate = false;
scoped_refptr<base::SingleThreadTaskRunner> m_taskRunner;
scoped_refptr<viz::VizProcessContextProvider> m_vizContextProvider;
};
diff --git a/src/core/compositor/display_gl_output_surface_qsg.cpp b/src/core/compositor/display_gl_output_surface_qsg.cpp
index d4b9154d1..0e9fff6e3 100644
--- a/src/core/compositor/display_gl_output_surface_qsg.cpp
+++ b/src/core/compositor/display_gl_output_surface_qsg.cpp
@@ -88,12 +88,13 @@ QSGNode *DisplayGLOutputSurface::updatePaintNode(QSGNode *oldNode, RenderWidgetH
{
{
QMutexLocker locker(&m_mutex);
- if (m_taskRunner) {
+ if (m_readyToUpdate) {
std::swap(m_middleBuffer, m_frontBuffer);
m_taskRunner->PostTask(
FROM_HERE,
base::BindOnce(&DisplayGLOutputSurface::swapBuffersOnVizThread, base::Unretained(this)));
m_taskRunner.reset();
+ m_readyToUpdate = false;
}
}