mirror of
https://git.proxmox.com/git/qemu
synced 2025-08-07 20:08:20 +00:00
qxl: interface_get_command: fix reported mode
report correct mode when in undefined mode. introduces qxl_mode_to_string(), and uses it in other places too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
22795174a3
commit
5b77870ce0
25
hw/qxl.c
25
hw/qxl.c
@ -336,6 +336,21 @@ static void interface_get_init_info(QXLInstance *sin, QXLDevInitInfo *info)
|
|||||||
info->n_surfaces = NUM_SURFACES;
|
info->n_surfaces = NUM_SURFACES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *qxl_mode_to_string(int mode)
|
||||||
|
{
|
||||||
|
switch (mode) {
|
||||||
|
case QXL_MODE_COMPAT:
|
||||||
|
return "compat";
|
||||||
|
case QXL_MODE_NATIVE:
|
||||||
|
return "native";
|
||||||
|
case QXL_MODE_UNDEFINED:
|
||||||
|
return "undefined";
|
||||||
|
case QXL_MODE_VGA:
|
||||||
|
return "vga";
|
||||||
|
}
|
||||||
|
return "INVALID";
|
||||||
|
}
|
||||||
|
|
||||||
/* called from spice server thread context only */
|
/* called from spice server thread context only */
|
||||||
static int interface_get_command(QXLInstance *sin, struct QXLCommandExt *ext)
|
static int interface_get_command(QXLInstance *sin, struct QXLCommandExt *ext)
|
||||||
{
|
{
|
||||||
@ -358,18 +373,19 @@ static int interface_get_command(QXLInstance *sin, struct QXLCommandExt *ext)
|
|||||||
}
|
}
|
||||||
qemu_mutex_unlock(&qxl->ssd.lock);
|
qemu_mutex_unlock(&qxl->ssd.lock);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
dprint(qxl, 2, "%s %s\n", __FUNCTION__, qxl_mode_to_string(qxl->mode));
|
||||||
qxl_log_command(qxl, "vga", ext);
|
qxl_log_command(qxl, "vga", ext);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
case QXL_MODE_COMPAT:
|
case QXL_MODE_COMPAT:
|
||||||
case QXL_MODE_NATIVE:
|
case QXL_MODE_NATIVE:
|
||||||
case QXL_MODE_UNDEFINED:
|
case QXL_MODE_UNDEFINED:
|
||||||
dprint(qxl, 2, "%s: %s\n", __FUNCTION__,
|
dprint(qxl, 4, "%s: %s\n", __FUNCTION__, qxl_mode_to_string(qxl->mode));
|
||||||
qxl->cmdflags ? "compat" : "native");
|
|
||||||
ring = &qxl->ram->cmd_ring;
|
ring = &qxl->ram->cmd_ring;
|
||||||
if (SPICE_RING_IS_EMPTY(ring)) {
|
if (SPICE_RING_IS_EMPTY(ring)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
dprint(qxl, 2, "%s: %s\n", __FUNCTION__, qxl_mode_to_string(qxl->mode));
|
||||||
SPICE_RING_CONS_ITEM(ring, cmd);
|
SPICE_RING_CONS_ITEM(ring, cmd);
|
||||||
ext->cmd = *cmd;
|
ext->cmd = *cmd;
|
||||||
ext->group_id = MEMSLOT_GROUP_GUEST;
|
ext->group_id = MEMSLOT_GROUP_GUEST;
|
||||||
@ -993,7 +1009,7 @@ static void ioport_write(void *opaque, uint32_t addr, uint32_t val)
|
|||||||
break;
|
break;
|
||||||
case QXL_IO_DESTROY_PRIMARY:
|
case QXL_IO_DESTROY_PRIMARY:
|
||||||
PANIC_ON(val != 0);
|
PANIC_ON(val != 0);
|
||||||
dprint(d, 1, "QXL_IO_DESTROY_PRIMARY\n");
|
dprint(d, 1, "QXL_IO_DESTROY_PRIMARY (%s)\n", qxl_mode_to_string(d->mode));
|
||||||
qxl_destroy_primary(d);
|
qxl_destroy_primary(d);
|
||||||
break;
|
break;
|
||||||
case QXL_IO_DESTROY_SURFACE_WAIT:
|
case QXL_IO_DESTROY_SURFACE_WAIT:
|
||||||
@ -1368,7 +1384,8 @@ static int qxl_post_load(void *opaque, int version)
|
|||||||
|
|
||||||
d->modes = (QXLModes*)((uint8_t*)d->rom + d->rom->modes_offset);
|
d->modes = (QXLModes*)((uint8_t*)d->rom + d->rom->modes_offset);
|
||||||
|
|
||||||
dprint(d, 1, "%s: restore mode\n", __FUNCTION__);
|
dprint(d, 1, "%s: restore mode (%s)\n", __FUNCTION__,
|
||||||
|
qxl_mode_to_string(d->mode));
|
||||||
newmode = d->mode;
|
newmode = d->mode;
|
||||||
d->mode = QXL_MODE_UNDEFINED;
|
d->mode = QXL_MODE_UNDEFINED;
|
||||||
switch (newmode) {
|
switch (newmode) {
|
||||||
|
Loading…
Reference in New Issue
Block a user