ui/vdagent: call vdagent_disconnect() when agent connection is lost

when the agent connection is lost, the input handler of the mouse
doesn't deactivate, which results in unresponsive mouse events in
VNC windows.

To fix this issue, call vdagent_disconnect() to reset the state
each time the frontend disconncect

Signed-off-by: Guoyi Tu <tugy@chinatelecom.cn>
Signed-off-by: dengpengcheng <dengpc12@chinatelecom.cn>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <71fd5a58fd09f10cdb35f167b2edb5669300116e.1692281173.git.tugy@chinatelecom.cn>
This commit is contained in:
Guoyi Tu 2023-08-17 22:12:52 +08:00 committed by Marc-André Lureau
parent 7007e98c4b
commit 1b4fd51656
1 changed files with 3 additions and 0 deletions

View File

@ -870,8 +870,11 @@ static void vdagent_disconnect(VDAgentChardev *vd)
static void vdagent_chr_set_fe_open(struct Chardev *chr, int fe_open) static void vdagent_chr_set_fe_open(struct Chardev *chr, int fe_open)
{ {
VDAgentChardev *vd = QEMU_VDAGENT_CHARDEV(chr);
if (!fe_open) { if (!fe_open) {
trace_vdagent_close(); trace_vdagent_close();
vdagent_disconnect(vd);
/* To reset_serial, we CLOSED our side. Make sure the other end knows we /* To reset_serial, we CLOSED our side. Make sure the other end knows we
* are ready again. */ * are ready again. */
qemu_chr_be_event(chr, CHR_EVENT_OPENED); qemu_chr_be_event(chr, CHR_EVENT_OPENED);