mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	buffer: reduce unnecessary painting to new cairo surfaces
Add buffer_adopt_cairo_surface(), which allows wrapping an existing cairo image surface in a struct lab_data_buffer. This is useful when loading PNGs since most will be loaded as ARGB32 already. Fix a memory leak in the non-ARGB32 PNG case, where we do still need to paint to a new image surface -- we were leaking the original surface. Eliminate an unnecessary temporary image surface in SVG loading and just render the SVG to the image surface held by the lab_data_buffer. I also cleaned up and clarified the buffer API a bit: - Add a pointer to the held cairo_surface_t (so we can still access it if there is no cairo_t). - Remove the free_on_destroy bool (it was always true). - Rename unscaled_width/height to logical_width/height and add an explanatory comment. It was unclear what "unscaled" meant. - Rename buffer_create_wrap() to buffer_create_from_data(). This is laying groundwork for some more icon fixes I am working on (making sure icons are loaded and rendered at the correct scale).
This commit is contained in:
		
							parent
							
								
									328f873db3
								
							
						
					
					
						commit
						d2b161bdf8
					
				
					 14 changed files with 123 additions and 84 deletions
				
			
		| 
						 | 
				
			
			@ -109,7 +109,7 @@ font_buffer_create(struct lab_data_buffer **buffer, int max_width,
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	*buffer = buffer_create_cairo(text_extents.width + arrow_extents.width,
 | 
			
		||||
			text_extents.height, scale, true);
 | 
			
		||||
			text_extents.height, scale);
 | 
			
		||||
	if (!*buffer) {
 | 
			
		||||
		wlr_log(WLR_ERROR, "Failed to create font buffer");
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue