Hi,

> +    qxl->render_update_redraw_area.left   = 0;
> +    qxl->render_update_redraw_area.right  =
> +        qxl->guest_primary.surface.width;
> +    qxl->render_update_redraw_area.top    = 0;
> +    qxl->render_update_redraw_area.bottom =
> +        qxl->guest_primary.surface.height;

Are there cases where render_update_redraw_area != full screen?

> +    qemu_mutex_lock(&qxl->ssd.lock);
> +    if (qxl->render_update_redraw) {
> +        /* don't bother copying them over since we will ignore them */
> +        qxl->num_dirty_rects += num_updated_rects;
> +        dprint(qxl, 1, "%s: scheduling update_area_bh, #dirty %d\n",
> +               __func__, qxl->num_dirty_rects);
> +        qemu_bh_schedule(qxl->update_area_bh);
> +        qemu_mutex_unlock(&qxl->ssd.lock);
> +        return;
> +    }
> +    if (qxl->num_dirty_rects + num_updated_rects > QXL_NUM_DIRTY_RECTS) {
> +        /*
> +         * overflow - merge all remaining rects. Hoping this is not
> +         * common so doesn't need to be optimized
> +         */
> +    }

Another easy way out is to simply set qxl->render_update_redraw = 1.

cheers,
  Gerd

Reply via email to