pixman-renderer: fail to zoom more gracefully

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

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=80258
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
dev
Derek Foreman 11 years ago committed by Pekka Paalanen
parent 3c6d20c5eb
commit 66951b7f87
  1. 5
      src/pixman-renderer.c

@ -385,6 +385,7 @@ static void
draw_view(struct weston_view *ev, struct weston_output *output, draw_view(struct weston_view *ev, struct weston_output *output,
pixman_region32_t *damage) /* in global coordinates */ pixman_region32_t *damage) /* in global coordinates */
{ {
static int zoom_logged = 0;
struct pixman_surface_state *ps = get_surface_state(ev->surface); struct pixman_surface_state *ps = get_surface_state(ev->surface);
/* repaint bounding region in global coordinates: */ /* repaint bounding region in global coordinates: */
pixman_region32_t repaint; pixman_region32_t repaint;
@ -403,9 +404,9 @@ draw_view(struct weston_view *ev, struct weston_output *output,
if (!pixman_region32_not_empty(&repaint)) if (!pixman_region32_not_empty(&repaint))
goto out; goto out;
if (output->zoom.active) { if (output->zoom.active && !zoom_logged) {
weston_log("pixman renderer does not support zoom\n"); weston_log("pixman renderer does not support zoom\n");
goto out; zoom_logged = 1;
} }
/* TODO: Implement repaint_region_complex() using pixman_composite_trapezoids() */ /* TODO: Implement repaint_region_complex() using pixman_composite_trapezoids() */

Loading…
Cancel
Save