ui/vdagent: send empty clipboard when unhandled
Rather than leaving the agent timing out or hanging, reply to it with an empty result. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20210805135715.857938-15-marcandre.lureau@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
d2ed2c01c2
commit
3d3f0bc3f7
@ -129,6 +129,7 @@ xkeymap_keymap(const char *name) "keymap '%s'"
|
||||
vdagent_open(void) ""
|
||||
vdagent_close(void) ""
|
||||
vdagent_send(const char *name) "msg %s"
|
||||
vdagent_send_empty_clipboard(void) ""
|
||||
vdagent_recv_chunk(uint32_t size) "size %d"
|
||||
vdagent_recv_msg(const char *name, uint32_t size) "msg %s, size %d"
|
||||
vdagent_peer_cap(const char *name) "cap %s"
|
||||
|
12
ui/vdagent.c
12
ui/vdagent.c
@ -375,6 +375,16 @@ static void vdagent_send_clipboard_data(VDAgentChardev *vd,
|
||||
vdagent_send_msg(vd, msg);
|
||||
}
|
||||
|
||||
static void vdagent_send_empty_clipboard_data(VDAgentChardev *vd,
|
||||
QemuClipboardSelection selection,
|
||||
QemuClipboardType type)
|
||||
{
|
||||
g_autoptr(QemuClipboardInfo) info = qemu_clipboard_info_new(&vd->cbpeer, selection);
|
||||
|
||||
trace_vdagent_send_empty_clipboard();
|
||||
vdagent_send_clipboard_data(vd, info, type);
|
||||
}
|
||||
|
||||
static void vdagent_clipboard_notify(Notifier *notifier, void *data)
|
||||
{
|
||||
VDAgentChardev *vd = container_of(notifier, VDAgentChardev, cbpeer.update);
|
||||
@ -482,6 +492,8 @@ static void vdagent_clipboard_recv_request(VDAgentChardev *vd, uint8_t s, uint32
|
||||
vd->cbpending[s] |= (1 << type);
|
||||
qemu_clipboard_request(info, type);
|
||||
}
|
||||
} else {
|
||||
vdagent_send_empty_clipboard_data(vd, s, type);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user