[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