From e147a2a71f7c7f0b3cc925199fe68951cb311379 Mon Sep 17 00:00:00 2001 From: Sean Paul Date: Sun, 22 Feb 2015 17:55:43 -0500 Subject: [PATCH] drm_hwcomposer: Initialize timeline_next to 1 Initialize timeline_next to 1, because point 0 will be the very first set operation. Since we increment every time set() is called, initializing to 0 would cause an off-by-one error where surfaceflinger would always composite on the front buffer. Change-Id: I1e67c36864716595eb489286a7db3f1dcb04f67e Signed-off-by: Sean Paul Reviewed-on: https://chrome-internal-review.googlesource.com/200735 Tested-by: Alexandre Courbot Reviewed-by: Alexandre Courbot Reviewed-by: Allen Martin Reviewed-by: Sean Paul --- hwcomposer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hwcomposer.cpp b/hwcomposer.cpp index 1c2b8b2..3f20e53 100644 --- a/hwcomposer.cpp +++ b/hwcomposer.cpp @@ -1194,7 +1194,14 @@ static int hwc_initialize_display(struct hwc_context_t *ctx, int display, return ret; } hd->timeline_fd = ret; - hd->timeline_next = 0; + + /* + * Initialize timeline_next to 1, because point 0 will be the very first + * set operation. Since we increment every time set() is called, + * initializing to 0 would cause an off-by-one error where + * surfaceflinger would composite on the front buffer. + */ + hd->timeline_next = 1; ret = hwc_set_initial_config(hd); if (ret) {