]> git.proxmox.com Git - mirror_qemu.git/commitdiff
ui/vdagent: call vdagent_disconnect() when agent connection is lost
authorGuoyi Tu <tugy@chinatelecom.cn>
Thu, 17 Aug 2023 14:12:52 +0000 (22:12 +0800)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 4 Sep 2023 11:29:07 +0000 (15:29 +0400)
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>

ui/vdagent.c

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