summary refs log tree commit diff stats
path: root/ui/console.c
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2018-03-05 17:37:48 +0100
committerGerd Hoffmann <kraxel@redhat.com>2018-03-12 09:03:15 +0100
commitf771c5440e04626f1cf9a6a7d1b1c6cd8168cacd (patch)
tree7afbd5af20b8df5f06e9f5857f8d331c26cdde41 /ui/console.c
parentb153f9019b5fcf7c085de688b123eb34f924f870 (diff)
downloadfocaccia-qemu-f771c5440e04626f1cf9a6a7d1b1c6cd8168cacd.tar.gz
focaccia-qemu-f771c5440e04626f1cf9a6a7d1b1c6cd8168cacd.zip
qapi: Add device ID and head parameters to screendump
QEMU's screendump command can only take dumps from the primary display.
When using multiple VGA cards, there is no way to get a dump from a
secondary card or other display heads yet. So let's add a 'device' and
a 'head' parameter to the HMP and QMP commands to be able to specify
alternative devices and heads with the screendump command, too.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-id: 1520267868-31778-1-git-send-email-thuth@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/console.c')
-rw-r--r--ui/console.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/ui/console.c b/ui/console.c
index 348610dd43..a8868fc04f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -344,14 +344,28 @@ write_err:
     goto out;
 }
 
-void qmp_screendump(const char *filename, Error **errp)
+void qmp_screendump(const char *filename, bool has_device, const char *device,
+                    bool has_head, int64_t head, Error **errp)
 {
-    QemuConsole *con = qemu_console_lookup_by_index(0);
+    QemuConsole *con;
     DisplaySurface *surface;
 
-    if (con == NULL) {
-        error_setg(errp, "There is no QemuConsole I can screendump from.");
-        return;
+    if (has_device) {
+        con = qemu_console_lookup_by_device_name(device, has_head ? head : 0,
+                                                 errp);
+        if (!con) {
+            return;
+        }
+    } else {
+        if (has_head) {
+            error_setg(errp, "'head' must be specified together with 'device'");
+            return;
+        }
+        con = qemu_console_lookup_by_index(0);
+        if (!con) {
+            error_setg(errp, "There is no console to take a screendump from");
+            return;
+        }
     }
 
     graphic_hw_update(con);