@ -462,37 +462,59 @@ void create_xdg_toplevel(struct wlr_xdg_surface *xdg_surface,
 
			
		
	
		
			
				
							return ; 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						xdg_surface - > toplevel  =  calloc ( 1 ,  sizeof ( struct  wlr_xdg_toplevel ) ) ; 
 
			
		
	
		
			
				
						if  ( xdg_surface - > toplevel  = =  NULL )  { 
 
			
		
	
		
			
				
							wl_resource_post_no_memory ( xdg_surface - > resource ) ; 
 
			
		
	
		
			
				
						if  ( xdg_surface - > role  ! =  WLR_XDG_SURFACE_ROLE_NONE )  { 
 
			
		
	
		
			
				
							wl_resource_post_error ( xdg_surface - > resource , 
 
			
		
	
		
			
				
								XDG_SURFACE_ERROR_ALREADY_CONSTRUCTED , 
 
			
		
	
		
			
				
								" xdg-surface has already been constructed " ) ; 
 
			
		
	
		
			
				
							return ; 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_maximize ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_fullscreen ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_minimize ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_move ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_resize ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . request_show_window_menu ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . set_parent ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . set_title ) ; 
 
			
		
	
		
			
				
						wl_signal_init ( & xdg_surface - > toplevel - > events . set_app_id ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						if  ( xdg_surface - > toplevel  = =  NULL )  { 
 
			
		
	
		
			
				
							xdg_surface - > toplevel  =  calloc ( 1 ,  sizeof ( struct  wlr_xdg_toplevel ) ) ; 
 
			
		
	
		
			
				
							if  ( xdg_surface - > toplevel  = =  NULL )  { 
 
			
		
	
		
			
				
								wl_resource_post_no_memory ( xdg_surface - > resource ) ; 
 
			
		
	
		
			
				
								return ; 
 
			
		
	
		
			
				
							} 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_maximize ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_fullscreen ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_minimize ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_move ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_resize ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . request_show_window_menu ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . set_parent ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . set_title ) ; 
 
			
		
	
		
			
				
							wl_signal_init ( & xdg_surface - > toplevel - > events . set_app_id ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
							xdg_surface - > toplevel - > base  =  xdg_surface ; 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						xdg_surface - > role  =  WLR_XDG_SURFACE_ROLE_TOPLEVEL ; 
 
			
		
	
		
			
				
						xdg_surface - > toplevel - > base  =  xdg_surface ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						struct  wl_resource  * toplevel_resource  =  wl_resource_create ( 
 
			
		
	
		
			
				
						assert ( xdg_surface - > toplevel - > resource  = =  NULL ) ; 
 
			
		
	
		
			
				
						xdg_surface - > toplevel - > resource  =  wl_resource_create ( 
 
			
		
	
		
			
				
							xdg_surface - > client - > client ,  & xdg_toplevel_interface , 
 
			
		
	
		
			
				
							wl_resource_get_version ( xdg_surface - > resource ) ,  id ) ; 
 
			
		
	
		
			
				
						if  ( toplevel_resource  = =  NULL )  { 
 
			
		
	
		
			
				
						if  ( xdg_surface- > toplevel - >  resource = =  NULL )  { 
 
			
		
	
		
			
				
							free ( xdg_surface - > toplevel ) ; 
 
			
		
	
		
			
				
							wl_resource_post_no_memory ( xdg_surface - > resource ) ; 
 
			
		
	
		
			
				
							return ; 
 
			
		
	
		
			
				
						} 
 
			
		
	
		
			
				
						wl_resource_set_implementation ( toplevel_ resource, 
 
			
		
	
		
			
				
						wl_resource_set_implementation ( xdg_surface- > toplevel - >  resource, 
 
			
		
	
		
			
				
							& xdg_toplevel_implementation ,  xdg_surface , 
 
			
		
	
		
			
				
							xdg_toplevel_handle_resource_destroy ) ; 
 
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					void  destroy_xdg_toplevel ( struct  wlr_xdg_surface  * xdg_surface )  {  
			
		
	
		
			
				
						assert ( xdg_surface - > role  = =  WLR_XDG_SURFACE_ROLE_TOPLEVEL ) ; 
 
			
		
	
		
			
				
						unmap_xdg_surface ( xdg_surface ) ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						// Don't destroy the toplevel state yet, the compositor might have some
 
 
			
		
	
		
			
				
						// listeners set up. Anyway the client can only re-create another
 
 
			
		
	
		
			
				
						// xdg-toplevel with this xdg-surface because of role restrictions.
 
 
			
		
	
		
			
				
						wl_resource_set_user_data ( xdg_surface - > toplevel - > resource ,  NULL ) ; 
 
			
		
	
		
			
				
						xdg_surface - > toplevel - > resource  =  NULL ; 
 
			
		
	
		
			
				
					
 
			
		
	
		
			
				
						xdg_surface - > toplevel - > resource  =  toplevel_resource ; 
 
			
		
	
		
			
				
						xdg_surface - > role =  WLR_XDG_SURFACE_ROLE_NONE  ; 
 
			
		
	
		
			
				
					}  
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					uint32_t  wlr_xdg_toplevel_set_size ( struct  wlr_xdg_surface  * surface ,