1
0
Fork 0

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: e2f2c92924 ("drm_hwcomposer: enable code analysis using clang-tidy")
Signed-off-by: Roman Stratiienko <r.stratiienko@gmail.com>
This commit is contained in:
Roman Stratiienko 2021-04-01 15:52:54 +03:00
parent 747747127f
commit 3f89182bb9

View file

@ -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;