mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-10-29 05:40:12 -04:00 
			
		
		
		
	backend/wayland: don't ack a configure event too early
Postpone sending xdg_surface.ack_configure until the guest compositor commits a buffer, if at all. Also see https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/128.
This commit is contained in:
		
							parent
							
								
									94e7165e85
								
							
						
					
					
						commit
						baf1e4f674
					
				
					 2 changed files with 10 additions and 1 deletions
				
			
		|  | @ -588,6 +588,11 @@ static bool output_commit(struct wlr_output *wlr_output, | |||
| 				output->surface); | ||||
| 		} | ||||
| 
 | ||||
| 		if (output->has_configure_serial) { | ||||
| 			xdg_surface_ack_configure(output->xdg_surface, output->configure_serial); | ||||
| 			output->has_configure_serial = false; | ||||
| 		} | ||||
| 
 | ||||
| 		wl_surface_commit(output->surface); | ||||
| 
 | ||||
| 		if (wp_feedback != NULL) { | ||||
|  | @ -742,7 +747,8 @@ static void xdg_surface_handle_configure(void *data, | |||
| 	assert(output && output->xdg_surface == xdg_surface); | ||||
| 
 | ||||
| 	output->configured = true; | ||||
| 	xdg_surface_ack_configure(xdg_surface, serial); | ||||
| 	output->has_configure_serial = true; | ||||
| 	output->configure_serial = serial; | ||||
| 
 | ||||
| 	int32_t req_width = output->wlr_output.width; | ||||
| 	int32_t req_height = output->wlr_output.height; | ||||
|  |  | |||
|  | @ -95,7 +95,10 @@ struct wlr_wl_output { | |||
| 	// 0 if not requested
 | ||||
| 	int32_t requested_width, requested_height; | ||||
| 
 | ||||
| 	uint32_t configure_serial; | ||||
| 	bool has_configure_serial; | ||||
| 	bool configured; | ||||
| 
 | ||||
| 	uint32_t enter_serial; | ||||
| 
 | ||||
| 	struct { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kirill Primak
						Kirill Primak