@ -348,12 +348,6 @@ ivi_layout_surface_destroy(struct ivi_layout_surface *ivisurf) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > surface_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > layer_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > surface_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > layer_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > scaling . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > pending . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > order . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > link ) ;   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -365,8 +359,6 @@ ivi_layout_surface_destroy(struct ivi_layout_surface *ivisurf) 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivi_layout_surface_remove_notification ( ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivisurf - > surface  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						free ( ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -493,265 +485,6 @@ update_opacity(struct ivi_layout_layer *ivilayer, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_surface_orientation ( struct  ivi_layout_layer  * ivilayer ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								   struct  ivi_layout_surface  * ivisurf )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_view  * view ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_matrix   * matrix  =  & ivisurf - > surface_rotation . matrix ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  width   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  height  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  v_sin   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  v_cos   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  cx  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  cy  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sx  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sy  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_for_each ( view ,  & ivisurf - > surface - > views ,  surface_link )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( view  ! =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( view  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ( ivilayer - > prop . dest_width  = =  0 )  | |   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    ( ivilayer - > prop . dest_height  = =  0 ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						width   =  ( float ) ivilayer - > prop . dest_width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						height  =  ( float ) ivilayer - > prop . dest_height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						switch  ( ivisurf - > prop . orientation )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_NORMAL :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_90 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sx  =  width  /  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sy  =  height  /  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_180 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  - 1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_270 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						default :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  - 1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sx  =  width  /  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sy  =  height  /  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > surface_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_geometry_dirty ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						cx  =  0.5f  *  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						cy  =  0.5f  *  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  - cx ,  - cy ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_rotate_xy ( matrix ,  v_cos ,  v_sin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_scale ( matrix ,  sx ,  sy ,  1.0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  cx ,  cy ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_insert ( & view - > geometry . transformation_list ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							       & ivisurf - > surface_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_set_transform_parent ( view ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_update_transform ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_layer_orientation ( struct  ivi_layout_layer  * ivilayer ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								 struct  ivi_layout_surface  * ivisurf )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_surface  * es  =  ivisurf - > surface ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_view     * view ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_matrix   * matrix  =  & ivisurf - > layer_rotation . matrix ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_output   * output  =  NULL ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  width   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  height  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  v_sin   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  v_cos   =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  cx  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  cy  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sx  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sy  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_for_each ( view ,  & ivisurf - > surface - > views ,  surface_link )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( view  ! =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( es  = =  NULL  | |  view  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						output  =  es - > output ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( output  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ( output - > width  = =  0 )  | |  ( output - > height  = =  0 ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						width  =  ( float ) output - > width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						height  =  ( float ) output - > height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						switch  ( ivilayer - > prop . orientation )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_NORMAL :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_90 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sx  =  width  /  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sy  =  height  /  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_180 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  - 1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						case  WL_OUTPUT_TRANSFORM_270 :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						default :   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_sin  =  - 1.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							v_cos  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sx  =  width  /  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							sy  =  height  /  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > layer_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_geometry_dirty ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						cx  =  0.5f  *  width ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						cy  =  0.5f  *  height ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  - cx ,  - cy ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_rotate_xy ( matrix ,  v_cos ,  v_sin ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_scale ( matrix ,  sx ,  sy ,  1.0 ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  cx ,  cy ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_insert ( & view - > geometry . transformation_list ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							       & ivisurf - > layer_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_set_transform_parent ( view ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_update_transform ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_surface_position ( struct  ivi_layout_surface  * ivisurf )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_view  * view ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  tx   =  ( float ) ivisurf - > prop . dest_x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  ty   =  ( float ) ivisurf - > prop . dest_y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_matrix  * matrix  =  & ivisurf - > surface_pos . matrix ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_for_each ( view ,  & ivisurf - > surface - > views ,  surface_link )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( view  ! =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( view  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > surface_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  tx ,  ty ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_insert ( & view - > geometry . transformation_list ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							       & ivisurf - > surface_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_set_transform_parent ( view ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_update_transform ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_layer_position ( struct  ivi_layout_layer  * ivilayer ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							      struct  ivi_layout_surface  * ivisurf )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_view  * view ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_matrix  * matrix  =  & ivisurf - > layer_pos . matrix ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  tx   =  ( float ) ivilayer - > prop . dest_x ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  ty   =  ( float ) ivilayer - > prop . dest_y ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_for_each ( view ,  & ivisurf - > surface - > views ,  surface_link )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( view  ! =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( view  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > layer_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_translate ( matrix ,  tx ,  ty ,  0.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_insert ( & view - > geometry . transformation_list ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							       & ivisurf - > layer_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_set_transform_parent ( view ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_update_transform ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_scale ( struct  ivi_layout_layer  * ivilayer ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						     struct  ivi_layout_surface  * ivisurf )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					{  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_view  * view ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						struct  weston_matrix  * matrix  =  & ivisurf - > scaling . matrix ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sx  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sy  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  lw  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sw  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  lh  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						float  sh  =  0.0f ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_for_each ( view ,  & ivisurf - > surface - > views ,  surface_link )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							if  ( view  ! =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
								break ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( view  = =  NULL )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ivisurf - > prop . source_width  = =  0  | |  ivisurf - > prop . source_height  = =  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							weston_log ( " ivi-shell: source rectangle is not yet set by ivi_layout_surface_set_source_rectangle \n " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						if  ( ivisurf - > prop . dest_width  = =  0  | |  ivisurf - > prop . dest_height  = =  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							weston_log ( " ivi-shell: destination rectangle is not yet set by ivi_layout_surface_set_destination_rectangle \n " ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						lw  =  ( ( float ) ivilayer - > prop . dest_width   /  ( float ) ivilayer - > prop . source_width  ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						sw  =  ( ( float ) ivisurf - > prop . dest_width 	/  ( float ) ivisurf - > prop . source_width   ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						lh  =  ( ( float ) ivilayer - > prop . dest_height  /  ( float ) ivilayer - > prop . source_height ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						sh  =  ( ( float ) ivisurf - > prop . dest_height   /  ( float ) ivisurf - > prop . source_height  ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						sx  =  sw  *  lw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						sy  =  sh  *  lh ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_remove ( & ivisurf - > scaling . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_scale ( matrix ,  sx ,  sy ,  1.0f ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_insert ( & view - > geometry . transformation_list ,   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
							       & ivisurf - > scaling . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_set_transform_parent ( view ,  NULL ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_view_update_transform ( view ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					update_prop ( struct  ivi_layout_layer  * ivilayer ,  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						    struct  ivi_layout_surface  * ivisurf )   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				 
				
					@ -763,11 +496,6 @@ update_prop(struct ivi_layout_layer *ivilayer, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_opacity ( ivilayer ,  ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_layer_orientation ( ivilayer ,  ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_layer_position ( ivilayer ,  ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_surface_position ( ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_surface_orientation ( ivilayer ,  ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						update_scale ( ivilayer ,  ivisurf ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivisurf - > update_count + + ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				 
				
					@ -2898,17 +2626,6 @@ ivi_layout_surface_create(struct weston_surface *wl_surface, 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivisurf - > surface - > width_from_buffer   =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivisurf - > surface - > height_from_buffer  =  0 ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( & ivisurf - > surface_rotation . matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( & ivisurf - > layer_rotation . matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( & ivisurf - > surface_pos . matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( & ivisurf - > layer_pos . matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						weston_matrix_init ( & ivisurf - > scaling . matrix ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_init ( & ivisurf - > surface_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_init ( & ivisurf - > layer_rotation . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_init ( & ivisurf - > surface_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_init ( & ivisurf - > layer_pos . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						wl_list_init ( & ivisurf - > scaling . link ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						init_surface_properties ( & ivisurf - > prop ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				 
				
						ivisurf - > event_mask  =  0 ;