[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 38/38] hmp: call the asynchronous QMP screendump
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v3 38/38] hmp: call the asynchronous QMP screendump to fix outdated/glitches |
Date: |
Mon, 26 Mar 2018 17:09:16 +0200 |
In order to fix the bad screendumps (same as rhbz#1230527), call into
the asynchonous version of the QMP command.
Signed-off-by: Marc-André Lureau <address@hidden>
---
hmp.h | 3 ++-
hmp.c | 6 ++----
ui/console.c | 17 -----------------
hmp-commands.hx | 3 ++-
4 files changed, 6 insertions(+), 23 deletions(-)
diff --git a/hmp.h b/hmp.h
index 4e2ec375b0..6ad43b7828 100644
--- a/hmp.h
+++ b/hmp.h
@@ -16,6 +16,7 @@
#include "qemu-common.h"
#include "qemu/readline.h"
+#include "qapi/qmp/dispatch.h"
void hmp_info_name(Monitor *mon, const QDict *qdict);
void hmp_info_version(Monitor *mon, const QDict *qdict);
@@ -96,7 +97,7 @@ void hmp_netdev_del(Monitor *mon, const QDict *qdict);
void hmp_getfd(Monitor *mon, const QDict *qdict);
void hmp_closefd(Monitor *mon, const QDict *qdict);
void hmp_sendkey(Monitor *mon, const QDict *qdict);
-void hmp_screendump(Monitor *mon, const QDict *qdict);
+void hmp_screendump_async(Monitor *mon, const QDict *qdict, QmpReturn *qret);
void hmp_nbd_server_start(Monitor *mon, const QDict *qdict);
void hmp_nbd_server_add(Monitor *mon, const QDict *qdict);
void hmp_nbd_server_remove(Monitor *mon, const QDict *qdict);
diff --git a/hmp.c b/hmp.c
index da9008fe63..ca1ee8e146 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2137,15 +2137,13 @@ err_out:
goto out;
}
-void hmp_screendump(Monitor *mon, const QDict *qdict)
+void hmp_screendump_async(Monitor *mon, const QDict *qdict, QmpReturn *qret)
{
const char *filename = qdict_get_str(qdict, "filename");
const char *id = qdict_get_try_str(qdict, "device");
int64_t head = qdict_get_try_int(qdict, "head", 0);
- Error *err = NULL;
- hmp_screendump_sync(filename, id != NULL, id, id != NULL, head, &err);
- hmp_handle_error(mon, &err);
+ qmp_screendump(filename, id != NULL, id, id != NULL, head, qret);
}
void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
diff --git a/ui/console.c b/ui/console.c
index da51861191..f1cbbd6317 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -426,23 +426,6 @@ static QemuConsole *get_console(bool has_device, const
char *device,
return con;
}
-void hmp_screendump_sync(const char *filename,
- bool has_device, const char *device,
- bool has_head, int64_t head, Error **errp)
-{
- DisplaySurface *surface;
- QemuConsole *con = get_console(has_device, device, has_head, head, errp);
-
- if (!con) {
- return;
- }
- /* This may not complete the drawing with Spice, you may have
- * glitches or outdated dumps, use qmp instead! */
- graphic_hw_update(con);
- surface = qemu_console_surface(con);
- ppm_save(filename, surface, errp);
-}
-
void qmp_screendump(const char *filename,
bool has_device, const char *device,
bool has_head, int64_t head,
diff --git a/hmp-commands.hx b/hmp-commands.hx
index 35d862a5d2..4911fc6474 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -258,7 +258,8 @@ ETEXI
.params = "filename [device [head]]",
.help = "save screen from head 'head' of display device 'device'
"
"into PPM image 'filename'",
- .cmd = hmp_screendump,
+ .async_cmd = hmp_screendump_async,
+ .async = true,
},
STEXI
--
2.17.0.rc1.1.g4c4f2b46a3
- [Qemu-devel] [PATCH v3 28/38] QmpSession: return orderly, (continued)
- [Qemu-devel] [PATCH v3 28/38] QmpSession: return orderly, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 30/38] scripts: learn 'async' qapi commands, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 29/38] qmp: introduce asynchronous command type, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 31/38] qmp: add qmp_return_is_cancelled(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 33/38] console: graphic_hw_update return true if async, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 34/38] console: add graphic_hw_update_done(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 35/38] console: make screendump asynchronous, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 36/38] monitor: start making qmp_human_monitor_command() asynchronous, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 32/38] monitor: add qmp_return_get_monitor(), Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 37/38] monitor: teach HMP about asynchronous commands, Marc-André Lureau, 2018/03/26
- [Qemu-devel] [PATCH v3 38/38] hmp: call the asynchronous QMP screendump to fix outdated/glitches,
Marc-André Lureau <=
- Re: [Qemu-devel] [PATCH v3 00/38] RFC: monitor: add asynchronous command type, Dr. David Alan Gilbert, 2018/03/26
- Re: [Qemu-devel] [PATCH v3 00/38] RFC: monitor: add asynchronous command type, no-reply, 2018/03/26
- Re: [Qemu-devel] [PATCH v3 00/38] RFC: monitor: add asynchronous command type, no-reply, 2018/03/27