mirror of
https://github.com/labwc/labwc.git
synced 2025-11-09 13:30:01 -05:00
ssd: guard against negative sizes
We always create a SSD for 0x0 window since decorations are usually requested before a window is mapped. Thus the sizes of some buffers/rects like edge shadows could be negative, which is asserted in wlroots 0.19.
This commit is contained in:
parent
defa1d1a98
commit
93d77801c5
4 changed files with 16 additions and 23 deletions
|
|
@ -32,8 +32,8 @@ static void
|
|||
corner_scale_crop(struct wlr_scene_buffer *buffer, int horizontal_overlap,
|
||||
int vertical_overlap, int corner_size)
|
||||
{
|
||||
int width = corner_size - horizontal_overlap;
|
||||
int height = corner_size - vertical_overlap;
|
||||
int width = MAX(corner_size - horizontal_overlap, 0);
|
||||
int height = MAX(corner_size - vertical_overlap, 0);
|
||||
struct wlr_fbox src_box = {
|
||||
.x = horizontal_overlap,
|
||||
.y = vertical_overlap,
|
||||
|
|
@ -127,7 +127,7 @@ set_shadow_part_geometry(struct ssd_part *part, int width, int height,
|
|||
y = -titlebar_height + inset;
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
scene_buf, visible_shadow_width, height - 2 * inset);
|
||||
scene_buf, visible_shadow_width, MAX(height - 2 * inset, 0));
|
||||
wlr_scene_node_set_enabled(part->node, show_sides);
|
||||
break;
|
||||
case LAB_SSD_PART_BOTTOM:
|
||||
|
|
@ -135,7 +135,7 @@ set_shadow_part_geometry(struct ssd_part *part, int width, int height,
|
|||
y = -titlebar_height + height;
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
scene_buf, width - 2 * inset, visible_shadow_width);
|
||||
scene_buf, MAX(width - 2 * inset, 0), visible_shadow_width);
|
||||
wlr_scene_node_set_enabled(part->node, show_topbottom);
|
||||
break;
|
||||
case LAB_SSD_PART_LEFT:
|
||||
|
|
@ -143,7 +143,7 @@ set_shadow_part_geometry(struct ssd_part *part, int width, int height,
|
|||
y = -titlebar_height + inset;
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
scene_buf, visible_shadow_width, height - 2 * inset);
|
||||
scene_buf, visible_shadow_width, MAX(height - 2 * inset, 0));
|
||||
wlr_scene_node_set_enabled(part->node, show_sides);
|
||||
break;
|
||||
case LAB_SSD_PART_TOP:
|
||||
|
|
@ -151,7 +151,7 @@ set_shadow_part_geometry(struct ssd_part *part, int width, int height,
|
|||
y = -titlebar_height - visible_shadow_width;
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
scene_buf, width - 2 * inset, visible_shadow_width);
|
||||
scene_buf, MAX(width - 2 * inset, 0), visible_shadow_width);
|
||||
wlr_scene_node_set_enabled(part->node, show_topbottom);
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue