@ -47,6 +47,7 @@ static void backend_destroy(struct wlr_backend *wlr_backend) {
 
			
		
	
		
		
			
				
					
						} 
	} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						wl_list_remove ( & backend - > display_destroy . link ) ; 
	wl_list_remove ( & backend - > display_destroy . link ) ; 
 
			
		
	
		
		
			
				
					
						wl_list_remove ( & backend - > renderer_destroy . link ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						struct  wlr_headless_output  * output ,  * output_tmp ; 
	struct  wlr_headless_output  * output ,  * output_tmp ; 
 
			
		
	
		
		
			
				
					
						wl_list_for_each_safe ( output ,  output_tmp ,  & backend - > outputs ,  link )  { 
	wl_list_for_each_safe ( output ,  output_tmp ,  & backend - > outputs ,  link )  { 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -61,8 +62,8 @@ static void backend_destroy(struct wlr_backend *wlr_backend) {
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						wlr_signal_emit_safe ( & wlr_backend - > events . destroy ,  backend ) ; 
	wlr_signal_emit_safe ( & wlr_backend - > events . destroy ,  backend ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						wlr_renderer_destroy ( backend - > renderer ) ; 
 
			
		
	
		
		
			
				
					
						if  ( backend - > egl  = =  & backend - > priv_egl )  { 
	if  ( backend - > egl  = =  & backend - > priv_egl )  { 
 
			
		
	
		
		
			
				
					
							wlr_renderer_destroy ( backend - > renderer ) ; 
 
			
		
	
		
		
			
				
					
							wlr_egl_finish ( & backend - > priv_egl ) ; 
		wlr_egl_finish ( & backend - > priv_egl ) ; 
 
			
		
	
		
		
			
				
					
						} 
	} 
 
			
		
	
		
		
			
				
					
						free ( backend ) ; 
	free ( backend ) ; 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -87,6 +88,12 @@ static void handle_display_destroy(struct wl_listener *listener, void *data) {
 
			
		
	
		
		
			
				
					
						backend_destroy ( & backend - > backend ) ; 
	backend_destroy ( & backend - > backend ) ; 
 
			
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					static  void  handle_renderer_destroy ( struct  wl_listener  * listener ,  void  * data )  {  
			
		
	
		
		
			
				
					
						struct  wlr_headless_backend  * backend  = 
 
			
		
	
		
		
			
				
					
							wl_container_of ( listener ,  backend ,  renderer_destroy ) ; 
 
			
		
	
		
		
			
				
					
						backend_destroy ( & backend - > backend ) ; 
 
			
		
	
		
		
			
				
					
					}  
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
					static  bool  backend_init ( struct  wlr_headless_backend  * backend , static  bool  backend_init ( struct  wlr_headless_backend  * backend ,  
			
		
	
		
		
			
				
					
							struct  wl_display  * display ,  struct  wlr_renderer  * renderer )  { 
		struct  wl_display  * display ,  struct  wlr_renderer  * renderer )  { 
 
			
		
	
		
		
			
				
					
						wlr_backend_init ( & backend - > backend ,  & backend_impl ) ; 
	wlr_backend_init ( & backend - > backend ,  & backend_impl ) ; 
 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
						
					 
					@ -112,6 +119,8 @@ static bool backend_init(struct wlr_headless_backend *backend,
 
			
		
	
		
		
			
				
					
						backend - > display_destroy . notify  =  handle_display_destroy ; 
	backend - > display_destroy . notify  =  handle_display_destroy ; 
 
			
		
	
		
		
			
				
					
						wl_display_add_destroy_listener ( display ,  & backend - > display_destroy ) ; 
	wl_display_add_destroy_listener ( display ,  & backend - > display_destroy ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						wl_list_init ( & backend - > renderer_destroy . link ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						return  true ; 
	return  true ; 
 
			
		
	
		
		
			
				
					
					} }  
			
		
	
		
		
			
				
					
					
 
			
		
	
	
		
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
					@ -173,6 +182,9 @@ struct wlr_backend *wlr_headless_backend_create_with_renderer(
 
			
		
	
		
		
			
				
					
							return  NULL ; 
		return  NULL ; 
 
			
		
	
		
		
			
				
					
						} 
	} 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						backend - > renderer_destroy . notify  =  handle_renderer_destroy ; 
 
			
		
	
		
		
			
				
					
						wl_signal_add ( & renderer - > events . destroy ,  & backend - > renderer_destroy ) ; 
 
			
		
	
		
		
			
				
					
					
 
			
		
	
		
		
			
				
					
						return  & backend - > backend ; 
	return  & backend - > backend ; 
 
			
		
	
		
		
			
				
					
					} }