@@ -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)