mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05: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
|
||||
modes that are known but unsupported.
|
||||
* 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
|
||||
[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));
|
||||
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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue