diff options
author | Roman Stratiienko <r.stratiienko@gmail.com> | 2021-04-01 15:52:54 +0300 |
---|---|---|
committer | Roman Stratiienko <r.stratiienko@gmail.com> | 2021-04-02 16:01:49 +0300 |
commit | 3f89182bb9dfbb537d88dc4c6d02d3efff138f53 (patch) | |
tree | 0ad218d7e621de2ff563f266d55e6b286a19982d | |
parent | 747747127f7918862e1299d76ebea352f68f14cc (diff) | |
download | drm_hwcomposer-3f89182bb9dfbb537d88dc4c6d02d3efff138f53.tar.gz |
drm_hwcomposer: Fix client range selection logic
Original change aimed to fix clang-tidy checks, but
accidentally it caused wrong client range selection.
Closes: https://gitlab.freedesktop.org/drm-hwcomposer/drm-hwcomposer/-/issues/53
Fixes: e2f2c929243f ("drm_hwcomposer: enable code analysis using clang-tidy")
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
-rw-r--r-- | backend/Backend.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/backend/Backend.cpp b/backend/Backend.cpp index 16e2859..3505385 100644 --- a/backend/Backend.cpp +++ b/backend/Backend.cpp @@ -60,18 +60,19 @@ HWC2::Error Backend::ValidateDisplay(DrmHwcTwo::HwcDisplay *display, } else { std::tie(client_start, client_size) = GetClientLayers(display, z_map); - size_t extra_client = (z_map.size() - client_size) - avail_planes; + int extra_client = int(z_map.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(z_map.size() - (client_start + client_size), - extra_client); + int prepend = std::min(client_start, extra_client); + int append = std::min(int(z_map.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), - z_map.size() - (start + client_size)); + int(z_map.size()) - int(start + client_size)); } else { client_size = extra_client; steps = 1 + z_map.size() - extra_client; |