mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	output-damage: fix output swapchain handling
When wlr_output.swapchain is used instead of the backend's, the buffer_type will be set to SCANOUT even if wlr_output_attach_render has been called. This tricks wlr_output_damage into thinking the whole output needs to be repainted. Workaround this issue by forcing buffer_type to RENDER when the output has a back-buffer set. Will clean all of that up when removing the precommit event handler altogether. This commit fixes damage tracking on the Wayland, X11 and headless backends.
This commit is contained in:
		
							parent
							
								
									c2bd63c186
								
							
						
					
					
						commit
						a48e569d38
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		| 
						 | 
					@ -52,7 +52,11 @@ static void output_handle_precommit(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	if (output->pending.committed & WLR_OUTPUT_STATE_BUFFER) {
 | 
						if (output->pending.committed & WLR_OUTPUT_STATE_BUFFER) {
 | 
				
			||||||
		// TODO: find a better way to access this info without a precommit
 | 
							// TODO: find a better way to access this info without a precommit
 | 
				
			||||||
		// handler
 | 
							// handler
 | 
				
			||||||
		output_damage->pending_buffer_type = output->pending.buffer_type;
 | 
							if (output->back_buffer != NULL) {
 | 
				
			||||||
 | 
								output_damage->pending_buffer_type = WLR_OUTPUT_STATE_BUFFER_RENDER;
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								output_damage->pending_buffer_type = output->pending.buffer_type;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue