qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCHv3] qxl-render/qxl: split out qxl_save_ppm


From: Alon Levy
Subject: [Qemu-devel] [PATCHv3] qxl-render/qxl: split out qxl_save_ppm
Date: Tue, 12 Jul 2011 16:55:26 +0300

Later the save will happen asynchronously on surface_updated callback.
---
 hw/qxl-render.c |   10 ++++++++++
 hw/qxl.c        |    2 +-
 hw/qxl.h        |    2 ++
 3 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/hw/qxl-render.c b/hw/qxl-render.c
index 60b822d..e64b646 100644
--- a/hw/qxl-render.c
+++ b/hw/qxl-render.c
@@ -70,6 +70,15 @@ void qxl_render_resize(PCIQXLDevice *qxl)
     }
 }
 
+static void qxl_save_ppm(PCIQXLDevice *qxl)
+{
+    if (qxl->ppm_save_filename) {
+        ppm_save(qxl->ppm_save_filename, qxl->ssd.ds->surface);
+        free(qxl->ppm_save_filename);
+        qxl->ppm_save_filename = NULL;
+    }
+}
+
 void qxl_render_update(PCIQXLDevice *qxl)
 {
     VGACommonState *vga = &qxl->vga;
@@ -139,6 +148,7 @@ void qxl_render_update(PCIQXLDevice *qxl)
                    dirty[i].right - dirty[i].left,
                    dirty[i].bottom - dirty[i].top);
     }
+    qxl_save_ppm(qxl);
 }
 
 static QEMUCursor *qxl_cursor(PCIQXLDevice *qxl, QXLCursor *cursor)
diff --git a/hw/qxl.c b/hw/qxl.c
index bd540c0..de93efa 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -1462,8 +1462,8 @@ static void qxl_hw_screen_dump(void *opaque, const char 
*filename)
     switch (qxl->mode) {
     case QXL_MODE_COMPAT:
     case QXL_MODE_NATIVE:
+        qxl->ppm_save_filename = qemu_strdup(filename);
         qxl_render_update(qxl);
-        ppm_save(filename, qxl->ssd.ds->surface);
         break;
     case QXL_MODE_VGA:
         vga->screen_dump(vga, filename);
diff --git a/hw/qxl.h b/hw/qxl.h
index 064311a..2c7f94a 100644
--- a/hw/qxl.h
+++ b/hw/qxl.h
@@ -32,6 +32,8 @@ typedef struct PCIQXLDevice {
     int32_t            num_memslots;
     int32_t            num_surfaces;
 
+    char              *ppm_save_filename;
+
 #if SPICE_INTERFACE_QXL_MINOR >= 1
     uint32_t           current_async;
     QemuMutex          async_lock;
-- 
1.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]