mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-03 07:15:29 -04:00
wayland: force monitor DPI to 96 when it’s unreasonably high
If an output has a bogus physical width or height, the DPI can become so high that the cell width/height is too large for pixman_image_fill_rectangles(), resulting in a crash in pixman_fill(). Since it doesn’t make any sense to use a DPI that is obviously bogus, don’t. Force it 96 instead.
This commit is contained in:
parent
2910ca354c
commit
42c6af0914
2 changed files with 9 additions and 0 deletions
|
|
@ -64,6 +64,7 @@
|
||||||
("permanently reset") instead of `2` ("reset") for DEC private
|
("permanently reset") instead of `2` ("reset") for DEC private
|
||||||
modes that are known but unsupported.
|
modes that are known but unsupported.
|
||||||
* Set `PWD` environment variable in the slave process ([#1179][1179]).
|
* Set `PWD` environment variable in the slave process ([#1179][1179]).
|
||||||
|
* DPI is now forced to 96 when found to be unreasonably high.
|
||||||
|
|
||||||
[1166]: https://codeberg.org/dnkl/foot/issues/1166
|
[1166]: https://codeberg.org/dnkl/foot/issues/1166
|
||||||
[1179]: https://codeberg.org/dnkl/foot/issues/1179
|
[1179]: https://codeberg.org/dnkl/foot/issues/1179
|
||||||
|
|
|
||||||
|
|
@ -409,6 +409,14 @@ output_update_ppi(struct monitor *mon)
|
||||||
|
|
||||||
double px_diag = sqrt(pow(scaled_width, 2) + pow(scaled_height, 2));
|
double px_diag = sqrt(pow(scaled_width, 2) + pow(scaled_height, 2));
|
||||||
mon->dpi = px_diag / mon->inch * mon->scale;
|
mon->dpi = px_diag / mon->inch * mon->scale;
|
||||||
|
|
||||||
|
if (mon->dpi > 1000) {
|
||||||
|
if (mon->name != NULL) {
|
||||||
|
LOG_WARN("%s: DPI=%f is unreasonable, using 96 instead",
|
||||||
|
mon->name, mon->dpi);
|
||||||
|
}
|
||||||
|
mon->dpi = 96;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue