mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-26 21:10:42 +00:00
vhost-user-gpu: fix cursor move/update
"move" is incorrectly initialized. Fix it by using a switch statement and also treating unknown commands with a fallback. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20210312100108.2706195-5-marcandre.lureau@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
96ee096a13
commit
59be75e7d8
@ -892,11 +892,8 @@ update_cursor_data_simple(VuGpu *g, uint32_t resource_id, gpointer data)
|
||||
static void
|
||||
vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||
{
|
||||
bool move = cursor->hdr.type != VIRTIO_GPU_CMD_MOVE_CURSOR;
|
||||
|
||||
g_debug("%s move:%d\n", G_STRFUNC, move);
|
||||
|
||||
if (move) {
|
||||
switch (cursor->hdr.type) {
|
||||
case VIRTIO_GPU_CMD_MOVE_CURSOR: {
|
||||
VhostUserGpuMsg msg = {
|
||||
.request = cursor->resource_id ?
|
||||
VHOST_USER_GPU_CURSOR_POS : VHOST_USER_GPU_CURSOR_POS_HIDE,
|
||||
@ -907,8 +904,11 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||
.y = cursor->pos.y,
|
||||
}
|
||||
};
|
||||
g_debug("%s: move", G_STRFUNC);
|
||||
vg_send_msg(g, &msg, -1);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
case VIRTIO_GPU_CMD_UPDATE_CURSOR: {
|
||||
VhostUserGpuMsg msg = {
|
||||
.request = VHOST_USER_GPU_CURSOR_UPDATE,
|
||||
.size = sizeof(VhostUserGpuCursorUpdate),
|
||||
@ -922,6 +922,7 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||
.hot_y = cursor->hot_y,
|
||||
}
|
||||
};
|
||||
g_debug("%s: update", G_STRFUNC);
|
||||
if (g->virgl) {
|
||||
vg_virgl_update_cursor_data(g, cursor->resource_id,
|
||||
msg.payload.cursor_update.data);
|
||||
@ -930,6 +931,11 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||
msg.payload.cursor_update.data);
|
||||
}
|
||||
vg_send_msg(g, &msg, -1);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
g_debug("%s: unknown cmd %d", G_STRFUNC, cursor->hdr.type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user