[PATCH] pixman-renderer: fail to zoom more gracefully

Pekka Paalanen ppaalanen at gmail.com
Wed Sep 3 06:21:09 PDT 2014


On Mon,  1 Sep 2014 10:33:28 -0500
Derek Foreman <derekf at osg.samsung.com> wrote:

> When zoom is activated in the pixman rendered the log is filled with warnings
> and all rendering stops.  With this patch the warning is generated once and
> rendering continues without zooming.
> 
> Closes bug 80258
> ---
>  src/pixman-renderer.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/src/pixman-renderer.c b/src/pixman-renderer.c
> index 4fdcb05..351f00e 100644
> --- a/src/pixman-renderer.c
> +++ b/src/pixman-renderer.c
> @@ -385,6 +385,7 @@ static void
>  draw_view(struct weston_view *ev, struct weston_output *output,
>  	  pixman_region32_t *damage) /* in global coordinates */
>  {
> +	static int zoom_logged = 0;
>  	struct pixman_surface_state *ps = get_surface_state(ev->surface);
>  	/* repaint bounding region in global coordinates: */
>  	pixman_region32_t repaint;
> @@ -403,9 +404,9 @@ draw_view(struct weston_view *ev, struct weston_output *output,
>  	if (!pixman_region32_not_empty(&repaint))
>  		goto out;
>  
> -	if (output->zoom.active) {
> +	if (output->zoom.active && !zoom_logged) {
>  		weston_log("pixman renderer does not support zoom\n");
> -		goto out;
> +		zoom_logged = 1;
>  	}
>  
>  	/* TODO: Implement repaint_region_complex() using pixman_composite_trapezoids() */

Yeah, that is indeed better. I was expecting this to screw up input
coordinates somehow, but it doesn't. Well, it does not for a pointer,
don't know about a touch screen. But better, anyway. :-)

Pushed, thanks,
pq


More information about the wayland-devel mailing list