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
> Cc: Rob Clark
> ---
> 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
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel