diff mbox

[4/7] console: Add graphic_hw_notify()

Message ID d7fd1556d89d546031fea3e9286f35c9373235de.1387475144.git.john.baboval@citrix.com
State New
Headers show

Commit Message

John Baboval Dec. 19, 2013, 6:40 p.m. UTC
From: "John V. Baboval" <john.baboval@citrix.com>

Hook to notify a display adapter of interesting UI changes such as
monitor hotplug, orientation changes, etc...


Signed-off-by: John V. Baboval <john.baboval@citrix.com>
---
 include/ui/console.h |    9 +++++++++
 ui/console.c         |    7 +++++++
 2 files changed, 16 insertions(+)
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index 95ed12a..a69ac3d 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -110,6 +110,13 @@  struct QemuConsoleClass {
 #define QEMU_BIG_ENDIAN_FLAG    0x01
 #define QEMU_ALLOCATED_FLAG     0x02
 
+typedef enum {
+    GN_PNP,            /* Guest should rescan PCI bus */
+    GN_MONITOR_PNP,    /* Guest should reload monitor port EDIDs */
+    GN_DISPLAY_CONFIG, /* Guest should reload display orientation */
+    GN_MOUSE_ENABLED,  /* Guest should reconfigure cursor */
+} gn_cmd_t;
+
 struct PixelFormat {
     uint8_t bits_per_pixel;
     uint8_t bytes_per_pixel;
@@ -277,6 +284,7 @@  typedef struct GraphicHwOps {
     void (*store_edid)(void *opaque, uint8_t *edid, size_t edid_size);
     QemuConsole *(*add_display)(void *opaque);
     void (*set_orientation)(void *opaque, uint32_t x, uint32_t y, uint32_t r);
+    void (*notify)(void *opaque, gn_cmd_t cmd, int value);
 } GraphicHwOps;
 
 QemuConsole *graphic_console_init(DeviceState *dev,
@@ -289,6 +297,7 @@  void graphic_hw_set_orientation(QemuConsole *con, uint32_t x, uint32_t y, uint32
 void graphic_hw_invalidate(QemuConsole *con);
 void graphic_hw_text_update(QemuConsole *con, console_ch_t *chardata);
 QemuConsole *graphic_hw_add_display(void);
+void graphic_hw_notify(QemuConsole *con, gn_cmd_t cmd, int value);
 
 QemuConsole *qemu_console_lookup_by_index(unsigned int index);
 QemuConsole *qemu_console_lookup_by_device(DeviceState *dev);
diff --git a/ui/console.c b/ui/console.c
index fc60570..0919973 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -293,6 +293,13 @@  QemuConsole *graphic_hw_add_display(void)
     return NULL;
 }
 
+void graphic_hw_notify(QemuConsole *con, gn_cmd_t cmd, int value)
+{
+    if (con && con->hw_ops->notify)
+        con->hw_ops->notify(con->hw, cmd, value);
+}
+
+
 static void ppm_save(const char *filename, struct DisplaySurface *ds,
                      Error **errp)
 {