summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/qwaylandcompositor.h
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@jollamobile.com>2014-02-10 14:32:34 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-11 15:05:34 +0100
commiteeb365a8f164a1402c19ca5a7e38e01f4e69cf7b (patch)
treef50857284b63cb6497e5ac73f66ee3c32aee9b57 /src/compositor/compositor_api/qwaylandcompositor.h
parent666f597ccd2ced23ecc71ba497981d1a88c34d77 (diff)
Make sure the frame callbacks are sent at the right time
When there is a rendering thread, like with QtQuick compositors, there is a race condition where the frame callbacks are sent before the last buffer the client sent is released. Assume the following scenario: attach(B1)/frame(F1)/commit()...frame started...attach(B2)/frame(F2)/ commit()...frame finished. On frame finished the callback just installed is emitted before the buffer B2 is being used and B1 released. That forces the client to allocate a third buffer to draw the next frame. Now, do not send out the frame callbacks until a new frame started. The successive draw will release B1, use the new B2 and than send out F2. Change-Id: I5743c7baf9fdd3cde28c5f594ff646c06abb74b7 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
Diffstat (limited to 'src/compositor/compositor_api/qwaylandcompositor.h')
-rw-r--r--src/compositor/compositor_api/qwaylandcompositor.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/compositor/compositor_api/qwaylandcompositor.h b/src/compositor/compositor_api/qwaylandcompositor.h
index 6ed9cd894..9009f4caa 100644
--- a/src/compositor/compositor_api/qwaylandcompositor.h
+++ b/src/compositor/compositor_api/qwaylandcompositor.h
@@ -84,6 +84,7 @@ public:
struct wl_display *waylandDisplay() const;
+ void frameStarted();
void sendFrameCallbacks(QList<QWaylandSurface *> visibleSurfaces);
void destroyClientForSurface(QWaylandSurface *surface);