@@ -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);
@@ -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)
{