@ -230,6 +230,22 @@ weston_surface_set_color(struct weston_surface *surface,
surface - > shader = & surface - > compositor - > solid_shader ;
surface - > shader = & surface - > compositor - > solid_shader ;
}
}
static void
weston_surface_damage_below_noupdate ( struct weston_surface * surface )
{
struct weston_surface * below ;
if ( surface - > output = = NULL )
return ;
if ( surface - > link . next = = & surface - > compositor - > surface_list )
return ;
below = container_of ( surface - > link . next , struct weston_surface , link ) ;
pixman_region32_union ( & below - > damage , & below - > damage ,
& surface - > transform . boundingbox ) ;
}
static void
static void
surface_compute_bbox ( struct weston_surface * surface , int32_t sx , int32_t sy ,
surface_compute_bbox ( struct weston_surface * surface , int32_t sx , int32_t sy ,
int32_t width , int32_t height ,
int32_t width , int32_t height ,
@ -429,20 +445,8 @@ weston_surface_damage(struct weston_surface *surface)
WL_EXPORT void
WL_EXPORT void
weston_surface_damage_below ( struct weston_surface * surface )
weston_surface_damage_below ( struct weston_surface * surface )
{
{
struct weston_surface * below ;
if ( surface - > output = = NULL )
return ;
if ( surface - > link . next = = & surface - > compositor - > surface_list )
return ;
below = container_of ( surface - > link . next , struct weston_surface , link ) ;
weston_surface_update_transform ( surface ) ;
weston_surface_update_transform ( surface ) ;
pixman_region32_union ( & below - > damage , & below - > damage ,
weston_surface_damage_below_noupdate ( surface ) ;
& surface - > transform . boundingbox ) ;
weston_compositor_schedule_repaint ( surface - > compositor ) ;
weston_compositor_schedule_repaint ( surface - > compositor ) ;
}
}