This is the second attempt to fix this issue, as a lesson from the last time it doesn't try to use an async monitor command. So with this patchset, in qxl mode, a screendump monitor command will complete before the file is written to disk. This is much better then a hang. To fix it does require asynchronous monitor command completion.
This is an RFC because of the last patch, that implements a DisplayAllocator trio (create,free,resize) for qxl. Without it there are two incorrect screendumps after each resolution change. With it there is no error, but it still seems it can be improved, in particular it does a redraw for every qxl_render_update because of wrong usage of the QEMU_ALLOCATED_FLAG that is required to get vga_draw_graphic to do the 24 to 32 bit conversion, to get correct display for VBE modes using 24 bit depth. Please review, Alon Levy (7): sdl: remove NULL check, g_malloc0 can't fail qxl: drop qxl_spice_update_area_async definition qxl: introduce QXLCookie qxl: make qxl_render_update async qxl-render: call ppm_save on callback qxl: use spice_qxl_update_area_dirty_async qxl: add allocator hw/qxl-render.c | 98 +++++++++++++----------- hw/qxl.c | 207 +++++++++++++++++++++++++++++++++++++++++++++------- hw/qxl.h | 12 +-- ui/sdl.c | 4 - ui/spice-display.c | 27 ++++++- ui/spice-display.h | 15 ++++ 6 files changed, 276 insertions(+), 87 deletions(-) -- 1.7.9