fix(linux): fix issues with rendering and touchscreens when displays are scaled (#4607)

This commit is contained in:
Julio Sanz
2026-01-22 00:29:53 +01:00
committed by GitHub
parent ff770d60c5
commit aca5d23f4e
6 changed files with 77 additions and 9 deletions

View File

@@ -1993,6 +1993,18 @@ namespace video {
auto scalar = std::fminf(wt / wd, ht / hd);
// we initialize scalar_tpcoords and logical dimensions to default values in case they are not set (non-KMS)
float scalar_tpcoords = 1.0f;
int display_env_logical_width = 0;
int display_env_logical_height = 0;
if (display->logical_width && display->logical_height && display->env_logical_width && display->env_logical_height) {
float lwd = display->logical_width;
float lhd = display->logical_height;
scalar_tpcoords = std::fminf(wd / lwd, hd / lhd);
display_env_logical_width = display->env_logical_width;
display_env_logical_height = display->env_logical_height;
}
auto w2 = scalar * wd;
auto h2 = scalar * hd;
@@ -2011,6 +2023,9 @@ namespace video {
offsetX,
offsetY,
1.0f / scalar,
scalar_tpcoords,
display_env_logical_width,
display_env_logical_height
};
}