aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorMatvii Zorin <matvii.zorin@globallogic.com>2021-04-26 17:24:56 +0300
committerMatvii Zorin <matvii.zorin@globallogic.com>2021-04-27 09:29:23 +0300
commit4535e53dc502f06ad5e369cbdc680c753baabd30 (patch)
treecf58184aa1f839227d0e3364a7053908aa5dc237 /backend
parent67a89d33b82caf45997bcdd3ca7690b5bd3ebef5 (diff)
downloaddrm_hwcomposer-4535e53dc502f06ad5e369cbdc680c753baabd30.tar.gz
drm_hwcomposer: Fix regression after composition creation cleanup
During rebasing of the local integration branch, one code chunk was not updated accidentally and the client range was not selected properly which leads to jank frames appearance. The issue has been already fixed by the commit 3f89182bb9df ("drm_hwcomposer: Fix client range selection logic"). Issue: https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/-/issues/53 Fixes: b3b15166f9da ("drm_hwcomposer: Add GetExtraClientRange method") Suggested-by: Roman Stratiienko <r.stratiienko@gmail.com> Signed-off-by: Matvii Zorin <matvii.zorin@globallogic.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/Backend.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/backend/Backend.cpp b/backend/Backend.cpp
index dfff00a..312faed 100644
--- a/backend/Backend.cpp
+++ b/backend/Backend.cpp
@@ -132,19 +132,20 @@ std::tuple<int, int> Backend::GetExtraClientRange(
if (avail_planes < display->layers().size())
avail_planes--;
- size_t extra_client = (layers.size() - client_size) - avail_planes;
+ int extra_client = int(layers.size() - client_size) - int(avail_planes);
if (extra_client > 0) {
int start = 0;
size_t steps = 0;
if (client_size != 0) {
- size_t prepend = std::min((size_t)client_start, extra_client);
- size_t append = std::min(layers.size() - (client_start + client_size),
- extra_client);
+ int prepend = std::min(client_start, extra_client);
+ int append = std::min(int(layers.size()) -
+ int(client_start + client_size),
+ extra_client);
start = client_start - (int)prepend;
client_size += extra_client;
steps = 1 + std::min(std::min(append, prepend),
- int(layers.size()) - (start + client_size));
+ int(layers.size()) - int(start + client_size));
} else {
client_size = extra_client;
steps = 1 + layers.size() - extra_client;