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