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
|
static void
|
||||||
vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||||
{
|
{
|
||||||
bool move = cursor->hdr.type != VIRTIO_GPU_CMD_MOVE_CURSOR;
|
switch (cursor->hdr.type) {
|
||||||
|
case VIRTIO_GPU_CMD_MOVE_CURSOR: {
|
||||||
g_debug("%s move:%d\n", G_STRFUNC, move);
|
|
||||||
|
|
||||||
if (move) {
|
|
||||||
VhostUserGpuMsg msg = {
|
VhostUserGpuMsg msg = {
|
||||||
.request = cursor->resource_id ?
|
.request = cursor->resource_id ?
|
||||||
VHOST_USER_GPU_CURSOR_POS : VHOST_USER_GPU_CURSOR_POS_HIDE,
|
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,
|
.y = cursor->pos.y,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
g_debug("%s: move", G_STRFUNC);
|
||||||
vg_send_msg(g, &msg, -1);
|
vg_send_msg(g, &msg, -1);
|
||||||
} else {
|
break;
|
||||||
|
}
|
||||||
|
case VIRTIO_GPU_CMD_UPDATE_CURSOR: {
|
||||||
VhostUserGpuMsg msg = {
|
VhostUserGpuMsg msg = {
|
||||||
.request = VHOST_USER_GPU_CURSOR_UPDATE,
|
.request = VHOST_USER_GPU_CURSOR_UPDATE,
|
||||||
.size = sizeof(VhostUserGpuCursorUpdate),
|
.size = sizeof(VhostUserGpuCursorUpdate),
|
||||||
|
@ -922,6 +922,7 @@ vg_process_cursor_cmd(VuGpu *g, struct virtio_gpu_update_cursor *cursor)
|
||||||
.hot_y = cursor->hot_y,
|
.hot_y = cursor->hot_y,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
g_debug("%s: update", G_STRFUNC);
|
||||||
if (g->virgl) {
|
if (g->virgl) {
|
||||||
vg_virgl_update_cursor_data(g, cursor->resource_id,
|
vg_virgl_update_cursor_data(g, cursor->resource_id,
|
||||||
msg.payload.cursor_update.data);
|
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);
|
msg.payload.cursor_update.data);
|
||||||
}
|
}
|
||||||
vg_send_msg(g, &msg, -1);
|
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