On Tue, Sep 04, 2012 at 01:55:44PM +0300, Pekka Paalanen wrote:
> surface_accumulate_damage() will call surface_compute_bbox() with the
> extents of the surface damage region, for transformed surfaces only. If
> there is no damage, surface_compute_bbox() will round up the empty
> rectangle to a 1x1 rectangle. Triangles are produced for this 1x1
> rectangle intersected with the surface.
> 
> The problem showed up with the triangle fan debug, where some seemingly
> garbage pixels showed up relative to rotated surfaces.
> 
> Fix this by explicitly checking, that the area, for which a bounding box
> is being computed for, is not zero.
> 
> Note, that the bbox will also be empty if only one of width and height
> is zero. We do not paint things with zero thickness.

All three patches look good, applied.

Kristian

> Signed-off-by: Pekka Paalanen <[email protected]>
> Cc: Rob Clark <[email protected]>
> ---
>  src/compositor.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
> 
> diff --git a/src/compositor.c b/src/compositor.c
> index 868afe9..2b963f5 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -347,6 +347,12 @@ surface_compute_bbox(struct weston_surface *surface, 
> int32_t sx, int32_t sy,
>       GLfloat int_x, int_y;
>       int i;
>  
> +     if (width == 0 || height == 0) {
> +             /* avoid rounding empty bbox to 1x1 */
> +             pixman_region32_init(bbox);
> +             return;
> +     }
> +
>       for (i = 0; i < 4; ++i) {
>               GLfloat x, y;
>               weston_surface_to_global_float(surface,
> -- 
> 1.7.8.6
> 
_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to