mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	scaled-scene-buffer: guard against negative sizes
This commit is contained in:
		
							parent
							
								
									6305cc0f78
								
							
						
					
					
						commit
						849fd7a96f
					
				
					 4 changed files with 13 additions and 2 deletions
				
			
		| 
						 | 
					@ -79,6 +79,9 @@ struct scaled_icon_buffer *
 | 
				
			||||||
scaled_icon_buffer_create(struct wlr_scene_tree *parent, struct server *server,
 | 
					scaled_icon_buffer_create(struct wlr_scene_tree *parent, struct server *server,
 | 
				
			||||||
	int width, int height)
 | 
						int width, int height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						assert(parent);
 | 
				
			||||||
 | 
						assert(width >= 0 && height >= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
						struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
				
			||||||
		parent, &impl, /* drop_buffer */ true);
 | 
							parent, &impl, /* drop_buffer */ true);
 | 
				
			||||||
	struct scaled_icon_buffer *self = znew(*self);
 | 
						struct scaled_icon_buffer *self = znew(*self);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,7 +49,10 @@ struct scaled_img_buffer *
 | 
				
			||||||
scaled_img_buffer_create(struct wlr_scene_tree *parent, struct lab_img *img,
 | 
					scaled_img_buffer_create(struct wlr_scene_tree *parent, struct lab_img *img,
 | 
				
			||||||
	int width, int height)
 | 
						int width, int height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						assert(parent);
 | 
				
			||||||
	assert(img);
 | 
						assert(img);
 | 
				
			||||||
 | 
						assert(width >= 0 && height >= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
						struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
				
			||||||
		parent, &impl, /* drop_buffer */ true);
 | 
							parent, &impl, /* drop_buffer */ true);
 | 
				
			||||||
	struct scaled_img_buffer *self = znew(*self);
 | 
						struct scaled_img_buffer *self = znew(*self);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -95,14 +95,16 @@ struct scaled_rect_buffer *scaled_rect_buffer_create(
 | 
				
			||||||
	/* TODO: support rounded corners for menus and OSDs */
 | 
						/* TODO: support rounded corners for menus and OSDs */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	assert(parent);
 | 
						assert(parent);
 | 
				
			||||||
 | 
						assert(width >= 0 && height >= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct scaled_rect_buffer *self = znew(*self);
 | 
						struct scaled_rect_buffer *self = znew(*self);
 | 
				
			||||||
	struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
						struct scaled_scene_buffer *scaled_buffer = scaled_scene_buffer_create(
 | 
				
			||||||
		parent, &impl, /* drop_buffer */ true);
 | 
							parent, &impl, /* drop_buffer */ true);
 | 
				
			||||||
	scaled_buffer->data = self;
 | 
						scaled_buffer->data = self;
 | 
				
			||||||
	self->scaled_buffer = scaled_buffer;
 | 
						self->scaled_buffer = scaled_buffer;
 | 
				
			||||||
	self->scene_buffer = scaled_buffer->scene_buffer;
 | 
						self->scene_buffer = scaled_buffer->scene_buffer;
 | 
				
			||||||
	self->width = MAX(width, 1);
 | 
						self->width = width;
 | 
				
			||||||
	self->height = MAX(height, 1);
 | 
						self->height = height;
 | 
				
			||||||
	self->border_width = border_width;
 | 
						self->border_width = border_width;
 | 
				
			||||||
	memcpy(self->fill_color, fill_color, sizeof(self->fill_color));
 | 
						memcpy(self->fill_color, fill_color, sizeof(self->fill_color));
 | 
				
			||||||
	memcpy(self->border_color, border_color, sizeof(self->border_color));
 | 
						memcpy(self->border_color, border_color, sizeof(self->border_color));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -227,6 +227,9 @@ scaled_scene_buffer_request_update(struct scaled_scene_buffer *self,
 | 
				
			||||||
		int width, int height)
 | 
							int width, int height)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	assert(self);
 | 
						assert(self);
 | 
				
			||||||
 | 
						assert(width >= 0);
 | 
				
			||||||
 | 
						assert(height >= 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct scaled_scene_buffer_cache_entry *cache_entry, *cache_entry_tmp;
 | 
						struct scaled_scene_buffer_cache_entry *cache_entry, *cache_entry_tmp;
 | 
				
			||||||
	wl_list_for_each_safe(cache_entry, cache_entry_tmp, &self->cache, link) {
 | 
						wl_list_for_each_safe(cache_entry, cache_entry_tmp, &self->cache, link) {
 | 
				
			||||||
		_cache_entry_destroy(cache_entry, self->drop_buffer);
 | 
							_cache_entry_destroy(cache_entry, self->drop_buffer);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue