|
@@ -185,7 +185,7 @@ static void vdagent_send_msg(VDAgentChardev *vd, VDAgentMessage *msg)
|
|
vdagent_send_buf(vd);
|
|
vdagent_send_buf(vd);
|
|
}
|
|
}
|
|
|
|
|
|
-static void vdagent_send_caps(VDAgentChardev *vd)
|
|
|
|
|
|
+static void vdagent_send_caps(VDAgentChardev *vd, bool request)
|
|
{
|
|
{
|
|
g_autofree VDAgentMessage *msg = g_malloc0(sizeof(VDAgentMessage) +
|
|
g_autofree VDAgentMessage *msg = g_malloc0(sizeof(VDAgentMessage) +
|
|
sizeof(VDAgentAnnounceCapabilities) +
|
|
sizeof(VDAgentAnnounceCapabilities) +
|
|
@@ -205,6 +205,7 @@ static void vdagent_send_caps(VDAgentChardev *vd)
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ caps->request = request;
|
|
vdagent_send_msg(vd, msg);
|
|
vdagent_send_msg(vd, msg);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -711,7 +712,7 @@ static void vdagent_chr_recv_caps(VDAgentChardev *vd, VDAgentMessage *msg)
|
|
|
|
|
|
vd->caps = caps->caps[0];
|
|
vd->caps = caps->caps[0];
|
|
if (caps->request) {
|
|
if (caps->request) {
|
|
- vdagent_send_caps(vd);
|
|
|
|
|
|
+ vdagent_send_caps(vd, false);
|
|
}
|
|
}
|
|
if (have_mouse(vd) && vd->mouse_hs) {
|
|
if (have_mouse(vd) && vd->mouse_hs) {
|
|
qemu_input_handler_activate(vd->mouse_hs);
|
|
qemu_input_handler_activate(vd->mouse_hs);
|
|
@@ -885,6 +886,7 @@ static void vdagent_chr_set_fe_open(struct Chardev *chr, int fe_open)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ vdagent_send_caps(vd, true);
|
|
}
|
|
}
|
|
|
|
|
|
static void vdagent_chr_parse(QemuOpts *opts, ChardevBackend *backend,
|
|
static void vdagent_chr_parse(QemuOpts *opts, ChardevBackend *backend,
|