@ -202,6 +202,9 @@ surface_rotate(struct shell_surface *surface, struct weston_pointer *pointer); 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade_startup ( struct  desktop_shell  * shell ) ;  
					 
					 
					 
					shell_fade_startup ( struct  desktop_shell  * shell ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					shell_fade ( struct  desktop_shell  * shell ,  enum  fade_type  type ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  struct  shell_seat  *  
					 
					 
					 
					static  struct  shell_seat  *  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					get_shell_seat ( struct  weston_seat  * seat ) ;  
					 
					 
					 
					get_shell_seat ( struct  weston_seat  * seat ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -2846,9 +2849,6 @@ static const struct weston_desktop_api shell_desktop_api = { 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					/* ************************ *
  
					 
					 
					 
					/* ************************ *
  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 *  end  of  libweston - desktop  *   
					 
					 
					 
					 *  end  of  libweston - desktop  *   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 *  * * * * * * * * * * * * * * * * * * * * * * * *  */   
					 
					 
					 
					 *  * * * * * * * * * * * * * * * * * * * * * * * *  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade ( struct  desktop_shell  * shell ,  enum  fade_type  type ) ;  
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					configure_static_view ( struct  weston_view  * ev ,  struct  weston_layer  * layer ,  int  x ,  int  y )  
					 
					 
					 
					configure_static_view ( struct  weston_view  * ev ,  struct  weston_layer  * layer ,  int  x ,  int  y )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3845,16 +3845,16 @@ unlock(struct desktop_shell *shell) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade_done ( struct  weston_view_animation  * animation ,  void  * data )  
					 
					 
					 
					shell_fade_done_for_output  ( struct  weston_view_animation  * animation ,  void  * data )  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  desktop_shell  * shell  =  data ;   
					 
					 
					 
						struct  shell_output  * shell_output  =  data ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  desktop_shell  * shell  =  shell_output - > shell ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						shell - > fade . animation  =  NULL ;   
					 
					 
					 
						shell_output - > fade . animation  =  NULL ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
						switch  ( shell_output - > fade . type )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						switch  ( shell - > fade . type )  {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
						case  FADE_IN :   
					 
					 
					 
						case  FADE_IN :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_surface_destroy ( shell - > fade . view - > surface ) ;   
					 
					 
					 
							weston_surface_destroy ( shell_output  - > fade . view - > surface ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . view  =  NULL ;   
					 
					 
					 
							shell_output  - > fade . view  =  NULL ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
							break ;   
					 
					 
					 
							break ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  FADE_OUT :   
					 
					 
					 
						case  FADE_OUT :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							lock ( shell ) ;   
					 
					 
					 
							lock ( shell ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3865,7 +3865,7 @@ shell_fade_done(struct weston_view_animation *animation, void *data) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  struct  weston_view  *  
					 
					 
					 
					static  struct  weston_view  *  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade_create_surface ( struct  desktop_shell  * shell )  
					 
					 
					 
					shell_fade_create_surface_for_output  ( struct  desktop_shell  * shell ,  struct  shell_output  * shell_output )  
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  weston_compositor  * compositor  =  shell - > compositor ;   
					 
					 
					 
						struct  weston_compositor  * compositor  =  shell - > compositor ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  weston_surface  * surface ;   
					 
					 
					 
						struct  weston_surface  * surface ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3881,8 +3881,8 @@ shell_fade_create_surface(struct desktop_shell *shell) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  NULL ;   
					 
					 
					 
							return  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_surface_set_size ( surface ,  8192 ,  8192 ) ;   
					 
					 
					 
						weston_surface_set_size ( surface ,  shell_output - > output - > width ,  shell_output - > output - > height ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_view_set_position ( view ,  0 ,  0 ) ;   
					 
					 
					 
						weston_view_set_position ( view ,  shell_output - > output - > x ,  shell_output - > output - > y ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
						weston_surface_set_color ( surface ,  0.0 ,  0.0 ,  0.0 ,  1.0 ) ;   
					 
					 
					 
						weston_surface_set_color ( surface ,  0.0 ,  0.0 ,  0.0 ,  1.0 ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_layer_entry_insert ( & compositor - > fade_layer . view_list ,   
					 
					 
					 
						weston_layer_entry_insert ( & compositor - > fade_layer . view_list ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									  & view - > layer_link ) ;   
					 
					 
					 
									  & view - > layer_link ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3897,6 +3897,7 @@ static void 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade ( struct  desktop_shell  * shell ,  enum  fade_type  type )  
					 
					 
					 
					shell_fade ( struct  desktop_shell  * shell ,  enum  fade_type  type )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						float  tint ;   
					 
					 
					 
						float  tint ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  shell_output  * shell_output ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						switch  ( type )  {   
					 
					 
					 
						switch  ( type )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  FADE_IN :   
					 
					 
					 
						case  FADE_IN :   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3910,32 +3911,35 @@ shell_fade(struct desktop_shell *shell, enum fade_type type) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						shell - > fade . type  =  type ;   
					 
					 
					 
						/* Create a separate fade surface for each output */   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_list_for_each ( shell_output ,  & shell - > output_list ,  link )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							shell_output - > fade . type  =  type ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( shell - > fade . view  = =  NULL )  {   
					 
					 
					 
							 if  ( shell_output  - > fade . view  = =  NULL )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . view  =  shell_fade_create_surface ( shell ) ;   
					 
					 
					 
								 shell_output  - > fade . view  =  shell_fade_create_surface_for_output  ( shell ,  shell_output ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( ! shell - > fade . view )   
					 
					 
					 
								 if  ( ! shell_output  - > fade . view )   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
								return ;   
					 
					 
					 
									continue  ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . view - > alpha  =  1.0  -  tint ;   
					 
					 
					 
								 shell_output  - > fade . view - > alpha  =  1.0  -  tint ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_view_update_transform ( shell - > fade . view ) ;   
					 
					 
					 
								 weston_view_update_transform ( shell_output  - > fade . view ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
							 }   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( shell - > fade . view - > output  = =  NULL )  {   
					 
					 
					 
							if  ( shell_output - > fade . view - > output  = =  NULL )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							/* If the black view gets a NULL output, we lost the
   
					 
					 
					 
								/* If the black view gets a NULL output, we lost the
   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  last  output  and  we ' ll  just  cancel  the  fade .   This   
					 
					 
					 
								 *  last  output  and  we ' ll  just  cancel  the  fade .   This   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  happens  when  you  close  the  last  window  under  the   
					 
					 
					 
								 *  happens  when  you  close  the  last  window  under  the   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  X11  or  Wayland  backends .  */   
					 
					 
					 
								 *  X11  or  Wayland  backends .  */   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > locked  =  false ;   
					 
					 
					 
								shell - > locked  =  false ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_surface_destroy ( shell - > fade . view - > surface ) ;   
					 
					 
					 
								weston_surface_destroy ( shell_output - > fade . view - > surface ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . view  =  NULL ;   
					 
					 
					 
								shell_output - > fade . view  =  NULL ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						}  else  if  ( shell - > fade . animation )  {   
					 
					 
					 
							}  else  if  ( shell_output - > fade . animation )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_fade_update ( shell - > fade . animation ,  tint ) ;   
					 
					 
					 
								weston_fade_update ( shell_output - > fade . animation ,  tint ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						}  else  {   
					 
					 
					 
							}  else  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . animation  =   
					 
					 
					 
								shell_output - > fade . animation  =   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_fade_run ( shell - > fade . view ,   
					 
					 
					 
									weston_fade_run ( shell_output - > fade . view ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
										1.0  -  tint ,  tint ,  300.0 ,   
					 
					 
					 
											1.0  -  tint ,  tint ,  300.0 ,   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
										shell_fade_done ,  shell ) ;   
					 
					 
					 
											shell_fade_done_for_output ,  shell_output ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3943,6 +3947,7 @@ static void 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					do_shell_fade_startup ( void  * data )  
					 
					 
					 
					do_shell_fade_startup ( void  * data )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  desktop_shell  * shell  =  data ;   
					 
					 
					 
						struct  desktop_shell  * shell  =  data ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  shell_output  * shell_output ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( shell - > startup_animation_type  = =  ANIMATION_FADE )  {   
					 
					 
					 
						if  ( shell - > startup_animation_type  = =  ANIMATION_FADE )  {   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							shell_fade ( shell ,  FADE_IN ) ;   
					 
					 
					 
							shell_fade ( shell ,  FADE_IN ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3950,8 +3955,10 @@ do_shell_fade_startup(void *data) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_log ( " desktop shell:  "   
					 
					 
					 
							weston_log ( " desktop shell:  "   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								   " unexpected fade-in animation type %d \n " ,   
					 
					 
					 
								   " unexpected fade-in animation type %d \n " ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								   shell - > startup_animation_type ) ;   
					 
					 
					 
								   shell - > startup_animation_type ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_surface_destroy ( shell - > fade . view - > surface ) ;   
					 
					 
					 
							wl_list_for_each ( shell_output ,  & shell - > output_list ,  link )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							shell - > fade . view  =  NULL ;   
					 
					 
					 
								weston_surface_destroy ( shell_output - > fade . view - > surface ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								shell_output - > fade . view  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3959,15 +3966,22 @@ static void 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					shell_fade_startup ( struct  desktop_shell  * shell )  
					 
					 
					 
					shell_fade_startup ( struct  desktop_shell  * shell )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  wl_event_loop  * loop ;   
					 
					 
					 
						struct  wl_event_loop  * loop ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  shell_output  * shell_output ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						bool  has_fade  =  false ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ! shell - > fade . startup_timer )   
					 
					 
					 
						wl_list_for_each ( shell_output ,  & shell - > output_list ,  link )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							if  ( ! shell_output - > fade . startup_timer )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_event_source_remove ( shell - > fade . startup_timer ) ;   
					 
					 
					 
							wl_event_source_remove ( shell_output - > fade . startup_timer ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						shell - > fade . startup_timer  =  NULL ;   
					 
					 
					 
							shell_output - > fade . startup_timer  =  NULL ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							has_fade  =  true ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						loop  =  wl_display_get_event_loop ( shell - > compositor - > wl_display ) ;   
					 
					 
					 
						if  ( has_fade )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_event_loop_add_idle ( loop ,  do_shell_fade_startup ,  shell ) ;   
					 
					 
					 
							loop  =  wl_display_get_event_loop ( shell - > compositor - > wl_display ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							wl_event_loop_add_idle ( loop ,  do_shell_fade_startup ,  shell ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  int  
					 
					 
					 
					static  int  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3988,27 +4002,30 @@ shell_fade_init(struct desktop_shell *shell) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						 */   
					 
					 
					 
						 */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  wl_event_loop  * loop ;   
					 
					 
					 
						struct  wl_event_loop  * loop ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
						struct  shell_output  * shell_output ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( shell - > fade . view  ! =  NULL )  {   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_log ( " %s: warning: fade surface already exists \n " ,   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								   __func__ ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( shell - > startup_animation_type  = =  ANIMATION_NONE )   
					 
					 
					 
						if  ( shell - > startup_animation_type  = =  ANIMATION_NONE )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						shell - > fade . view  =  shell_fade_create_surface ( shell ) ;   
					 
					 
					 
						wl_list_for_each ( shell_output ,  & shell - > output_list ,  link )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ! shell - > fade . view )   
					 
					 
					 
							if  ( shell_output - > fade . view  ! =  NULL )  {   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
								weston_log ( " %s: warning: fade surface already exists \n " ,   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									   __func__ ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							shell_output - > fade . view  =  shell_fade_create_surface_for_output ( shell ,  shell_output ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  ( ! shell_output - > fade . view )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								continue ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_view_update_transform ( shell - > fade . view ) ;   
					 
					 
					 
							 weston_view_update_transform ( shell_output  - > fade . view ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_surface_damage ( shell - > fade . view - > surface ) ;   
					 
					 
					 
							 weston_surface_damage ( shell_output  - > fade . view - > surface ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						loop  =  wl_display_get_event_loop ( shell - > compositor - > wl_display ) ;   
					 
					 
					 
							loop  =  wl_display_get_event_loop ( shell - > compositor - > wl_display ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						shell - > fade . startup_timer  =   
					 
					 
					 
							shell_output - > fade . startup_timer  =   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							wl_event_loop_add_timer ( loop ,  fade_startup_timeout ,  shell ) ;   
					 
					 
					 
								wl_event_loop_add_timer ( loop ,  fade_startup_timeout ,  shell ) ;   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_event_source_timer_update ( shell - > fade . startup_timer ,  15000 ) ;   
					 
					 
					 
							wl_event_source_timer_update ( shell_output - > fade . startup_timer ,  15000 ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -4023,7 +4040,7 @@ idle_handler(struct wl_listener *listener, void *data) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							weston_seat_break_desktop_grabs ( seat ) ;   
					 
					 
					 
							weston_seat_break_desktop_grabs ( seat ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						shell_fade ( shell ,  FADE_OUT ) ;   
					 
					 
					 
						shell_fade ( shell ,  FADE_OUT ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						/* lock() is called from shell_fade_done() */   
					 
					 
					 
						/* lock() is called from shell_fade_done_for_output () */   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void