ssd: don't update ssd if view width is too small

Clients can ignore the requsted geometry and negative widths could be
passed to `wlr_scene_rect_set_size()` in `ssd_titlebar_update()` or in
`ssd_border_update()`.
This commit is contained in:
tokyo4j 2024-04-27 18:15:53 +09:00 committed by Consolatis
parent c224e1e05a
commit 2603dbf396

View file

@ -229,6 +229,16 @@ ssd_update_geometry(struct ssd *ssd)
int eff_width = current.width;
int eff_height = view_effective_height(ssd->view, /* use_pending */ false);
if (eff_width > 0 && eff_width < LAB_MIN_VIEW_WIDTH) {
/*
* Prevent negative values in calculations like
* `width - SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT`
*/
wlr_log(WLR_ERROR,
"view width is smaller than its minimal value");
return;
}
if (eff_width == cached.width && eff_height == cached.height) {
if (current.x != cached.x || current.y != cached.y) {
/* Dynamically resize extents based on position and usable_area */