mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-29 07:58:01 -04:00
--window-size-chars: ensure width/height are valid for current scaling factor
Before this patch, we didn’t ensure width and height were valid for the current scaling factor, when fractional scaling _is_ available. That is, we didn’t ensure the width/height values multiplied back to their original values after dividing with the scaling factor. Closes #1446
This commit is contained in:
parent
05131a9b0c
commit
1af0277564
2 changed files with 7 additions and 16 deletions
|
|
@ -72,12 +72,16 @@
|
||||||
* Crash when compositor does not implement the _viewporter_ interface
|
* Crash when compositor does not implement the _viewporter_ interface
|
||||||
([#1444][1444]).
|
([#1444][1444]).
|
||||||
* CSD rendering with fractional scaling ([#1441][1441]).
|
* CSD rendering with fractional scaling ([#1441][1441]).
|
||||||
|
* Regression: crash with certain combinations of
|
||||||
|
`--window-size-chars=NxM` and desktop scaling factors
|
||||||
|
([#1446][1446]).
|
||||||
|
|
||||||
[1423]: https://codeberg.org/dnkl/foot/issues/1423
|
[1423]: https://codeberg.org/dnkl/foot/issues/1423
|
||||||
[1431]: https://codeberg.org/dnkl/foot/issues/1431
|
[1431]: https://codeberg.org/dnkl/foot/issues/1431
|
||||||
[1430]: https://codeberg.org/dnkl/foot/issues/1430
|
[1430]: https://codeberg.org/dnkl/foot/issues/1430
|
||||||
[1444]: https://codeberg.org/dnkl/foot/issues/1444
|
[1444]: https://codeberg.org/dnkl/foot/issues/1444
|
||||||
[1441]: https://codeberg.org/dnkl/foot/issues/1441
|
[1441]: https://codeberg.org/dnkl/foot/issues/1441
|
||||||
|
[1446]: https://codeberg.org/dnkl/foot/issues/1446
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
||||||
19
render.c
19
render.c
|
|
@ -3933,22 +3933,9 @@ maybe_resize(struct terminal *term, int width, int height, bool force)
|
||||||
width += 2 * term->conf->pad_x * scale;
|
width += 2 * term->conf->pad_x * scale;
|
||||||
height += 2 * term->conf->pad_y * scale;
|
height += 2 * term->conf->pad_y * scale;
|
||||||
|
|
||||||
/*
|
/* Ensure width/height is a valid multiple of scale */
|
||||||
* Ensure we can scale to logical size, and back to
|
width = roundf(scale * roundf(width / scale));
|
||||||
* pixels without truncating.
|
height = roundf(scale * roundf(height / scale));
|
||||||
*/
|
|
||||||
if (!term_fractional_scaling(term)) {
|
|
||||||
xassert((int)ceilf(scale) == (int)scale);
|
|
||||||
|
|
||||||
int iscale = scale;
|
|
||||||
if (width % iscale)
|
|
||||||
width += iscale - width % iscale;
|
|
||||||
if (height % iscale)
|
|
||||||
height += iscale - height % iscale;
|
|
||||||
|
|
||||||
xassert(width % iscale == 0);
|
|
||||||
xassert(height % iscale == 0);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue