@ -345,6 +345,26 @@ region_init_infinite(pixman_region32_t *region) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  struct  weston_subsurface  *  
					 
					 
					 
					static  struct  weston_subsurface  *  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					weston_surface_to_subsurface ( struct  weston_surface  * surface ) ;  
					 
					 
					 
					weston_surface_to_subsurface ( struct  weston_surface  * surface ) ;  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					weston_view_output_move_handler ( struct  wl_listener  * listener ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									void  * data )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  weston_view  * ev ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  weston_output  * output  =  data ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						ev  =  container_of ( listener ,  struct  weston_view ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								  output_move_listener ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						/* the child window's view->geometry is a relative coordinate to
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						 *  parent  view ,  no  need  to  move  child_view .  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  ( ev - > geometry . parent )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						weston_view_set_position ( ev ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									 ev - > geometry . x  +  output - > move_x ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
									 ev - > geometry . y  +  output - > move_y ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					WL_EXPORT  struct  weston_view  *  
					 
					 
					 
					WL_EXPORT  struct  weston_view  *  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					weston_view_create ( struct  weston_surface  * surface )  
					 
					 
					 
					weston_view_create ( struct  weston_surface  * surface )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -380,6 +400,8 @@ weston_view_create(struct weston_surface *surface) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						view - > output  =  NULL ;   
					 
					 
					 
						view - > output  =  NULL ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						view - > output_move_listener . notify  =  weston_view_output_move_handler ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						return  view ;   
					 
					 
					 
						return  view ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -727,6 +749,7 @@ weston_surface_update_output_mask(struct weston_surface *es, uint32_t mask) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					weston_surface_assign_output ( struct  weston_surface  * es )  
					 
					 
					 
					weston_surface_assign_output ( struct  weston_surface  * es )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -793,6 +816,13 @@ weston_view_assign_output(struct weston_view *ev) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						}   
					 
					 
					 
						}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						pixman_region32_fini ( & region ) ;   
					 
					 
					 
						pixman_region32_fini ( & region ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  ( ev - > output_mask  ! =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							wl_list_remove ( & ev - > output_move_listener . link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  ( mask  ! =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							wl_signal_add ( & new_output - > move_signal ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								      & ev - > output_move_listener ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						ev - > output  =  new_output ;   
					 
					 
					 
						ev - > output  =  new_output ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						ev - > output_mask  =  mask ;   
					 
					 
					 
						ev - > output_mask  =  mask ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1233,6 +1263,8 @@ weston_view_unmap(struct weston_view *view) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_init ( & view - > layer_link ) ;   
					 
					 
					 
						wl_list_init ( & view - > layer_link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_remove ( & view - > link ) ;   
					 
					 
					 
						wl_list_remove ( & view - > link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_init ( & view - > link ) ;   
					 
					 
					 
						wl_list_init ( & view - > link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_list_remove ( & view - > output_move_listener . link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_list_init ( & view - > output_move_listener . link ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						view - > output_mask  =  0 ;   
					 
					 
					 
						view - > output_mask  =  0 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_surface_assign_output ( view - > surface ) ;   
					 
					 
					 
						weston_surface_assign_output ( view - > surface ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -3152,8 +3184,8 @@ weston_output_transform_scale_init(struct weston_output *output, uint32_t transf 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						output - > height  / =  scale ;   
					 
					 
					 
						output - > height  / =  scale ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					WL_EXPORT   void  
					 
					 
					 
					static   void  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					weston_output_move  ( struct  weston_output  * output ,  int  x ,  int  y )  
					 
					 
					 
					weston_output_init_geometry  ( struct  weston_output  * output ,  int  x ,  int  y )  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						output - > x  =  x ;   
					 
					 
					 
						output - > x  =  x ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						output - > y  =  y ;   
					 
					 
					 
						output - > y  =  y ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3164,6 +3196,41 @@ weston_output_move(struct weston_output *output, int x, int y) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									  output - > height ) ;   
					 
					 
					 
									  output - > height ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					WL_EXPORT  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					weston_output_move ( struct  weston_output  * output ,  int  x ,  int  y )  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						pixman_region32_t  old_region ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						struct  wl_resource  * resource ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						output - > move_x  =  x  -  output - > x ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						output - > move_y  =  y  -  output - > y ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						if  ( output - > move_x  = =  0  & &  output - > move_y  = =  0 )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						pixman_region32_init ( & old_region ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						pixman_region32_copy ( & old_region ,  & output - > region ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						weston_output_init_geometry ( output ,  x ,  y ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						output - > dirty  =  1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						/* Move views on this output. */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_signal_emit ( & output - > move_signal ,  output ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						/* Notify clients of the change for output position. */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_resource_for_each ( resource ,  & output - > resource_list )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							wl_output_send_geometry ( resource ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > x ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > y ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > mm_width ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > mm_height ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > subpixel ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > make ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > model ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
										output - > transform ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					WL_EXPORT  void  
					 
					 
					 
					WL_EXPORT  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					weston_output_init ( struct  weston_output  * output ,  struct  weston_compositor  * c ,  
					 
					 
					 
					weston_output_init ( struct  weston_output  * output ,  struct  weston_compositor  * c ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							   int  x ,  int  y ,  int  mm_width ,  int  mm_height ,  uint32_t  transform ,   
					 
					 
					 
							   int  x ,  int  y ,  int  mm_width ,  int  mm_height ,  uint32_t  transform ,   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -3180,11 +3247,12 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_output_transform_scale_init ( output ,  transform ,  scale ) ;   
					 
					 
					 
						weston_output_transform_scale_init ( output ,  transform ,  scale ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_output_init_zoom ( output ) ;   
					 
					 
					 
						weston_output_init_zoom ( output ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						weston_output_move  ( output ,  x ,  y ) ;   
					 
					 
					 
						weston_output_init_geometry  ( output ,  x ,  y ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
						weston_output_damage ( output ) ;   
					 
					 
					 
						weston_output_damage ( output ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_signal_init ( & output - > frame_signal ) ;   
					 
					 
					 
						wl_signal_init ( & output - > frame_signal ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_signal_init ( & output - > destroy_signal ) ;   
					 
					 
					 
						wl_signal_init ( & output - > destroy_signal ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						wl_signal_init ( & output - > move_signal ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_init ( & output - > animation_list ) ;   
					 
					 
					 
						wl_list_init ( & output - > animation_list ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						wl_list_init ( & output - > resource_list ) ;   
					 
					 
					 
						wl_list_init ( & output - > resource_list ) ;