will later be reused from surface_updated callback when compiling against a newer spice-server. --- hw/qxl-render.c | 37 ++++++++++++++++++++++--------------- 1 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/hw/qxl-render.c b/hw/qxl-render.c index e64b646..d70373d 100644 --- a/hw/qxl-render.c +++ b/hw/qxl-render.c @@ -79,12 +79,32 @@ static void qxl_save_ppm(PCIQXLDevice *qxl) } } +static void qxl_render_update_dirty_rectangles(PCIQXLDevice *qxl, QXLRect *dirty, uint32_t num_dirty) +{ + VGACommonState *vga = &qxl->vga; + int i; + + dprint(qxl, 3, "%s: %d\n", __FUNCTION__, num_dirty); + for (i = 0; i < num_dirty; i++) { + if (qemu_spice_rect_is_empty(dirty + i)) { + break; + } + if (qxl->guest_primary.flipped) { + qxl_flip(qxl, dirty + i); + } + dpy_update(vga->ds, + dirty[i].left, dirty[i].top, + dirty[i].right - dirty[i].left, + dirty[i].bottom - dirty[i].top); + } + qxl_save_ppm(qxl); +} + void qxl_render_update(PCIQXLDevice *qxl) { VGACommonState *vga = &qxl->vga; QXLRect dirty[32], update; void *ptr; - int i; if (qxl->guest_primary.resized) { qxl->guest_primary.resized = 0; @@ -135,20 +155,7 @@ void qxl_render_update(PCIQXLDevice *qxl) memset(dirty, 0, sizeof(dirty)); qxl_spice_update_area(qxl, 0, &update, dirty, ARRAY_SIZE(dirty), 1); - - for (i = 0; i < ARRAY_SIZE(dirty); i++) { - if (qemu_spice_rect_is_empty(dirty+i)) { - break; - } - if (qxl->guest_primary.flipped) { - qxl_flip(qxl, dirty+i); - } - dpy_update(vga->ds, - dirty[i].left, dirty[i].top, - dirty[i].right - dirty[i].left, - dirty[i].bottom - dirty[i].top); - } - qxl_save_ppm(qxl); + qxl_render_update_dirty_rectangles(qxl, dirty, ARRAY_SIZE(dirty)); } static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor) -- 1.7.6