[PATCH weston 3/3] compositor: do not round a zero area to non-zero

Kristian Høgsberg hoegsberg at gmail.com
Tue Sep 4 13:25:39 PDT 2012


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 <ppaalanen at gmail.com>
> Cc: Rob Clark <rob.clark at linaro.org>
> ---
>  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
> 


More information about the wayland-devel mailing list