From 81c88ce0b84db9395463901d79f7e87e9210527a Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Wed, 17 Jul 2024 21:15:38 +0400 Subject: ui/vdagent: improve vdagent_fe_open() trace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Place the trace when the function enters, with arg value. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20240717171541.201525-3-marcandre.lureau@redhat.com> --- ui/vdagent.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ui/vdagent.c') diff --git a/ui/vdagent.c b/ui/vdagent.c index 64d7ab245a..cb74739bc4 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -872,6 +872,8 @@ static void vdagent_chr_set_fe_open(struct Chardev *chr, int fe_open) { VDAgentChardev *vd = QEMU_VDAGENT_CHARDEV(chr); + trace_vdagent_fe_open(fe_open); + if (!fe_open) { trace_vdagent_close(); vdagent_disconnect(vd); @@ -881,7 +883,6 @@ static void vdagent_chr_set_fe_open(struct Chardev *chr, int fe_open) return; } - trace_vdagent_open(); } static void vdagent_chr_parse(QemuOpts *opts, ChardevBackend *backend, -- cgit 1.4.1 From 63a5d4de589330f0a1c46f59a4b7336adda4635b Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Wed, 17 Jul 2024 21:15:39 +0400 Subject: ui/vdagent: notify clipboard peers of serial reset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since we reset the serial counters, peers should also be reset to be sync. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20240717171541.201525-4-marcandre.lureau@redhat.com> --- ui/clipboard.c | 2 ++ ui/trace-events | 1 + ui/vdagent.c | 2 ++ 3 files changed, 5 insertions(+) (limited to 'ui/vdagent.c') diff --git a/ui/clipboard.c b/ui/clipboard.c index 4264884a6c..132086eb13 100644 --- a/ui/clipboard.c +++ b/ui/clipboard.c @@ -155,6 +155,8 @@ void qemu_clipboard_reset_serial(void) QemuClipboardNotify notify = { .type = QEMU_CLIPBOARD_RESET_SERIAL }; int i; + trace_clipboard_reset_serial(); + for (i = 0; i < QEMU_CLIPBOARD_SELECTION__COUNT; i++) { QemuClipboardInfo *info = qemu_clipboard_info(i); if (info) { diff --git a/ui/trace-events b/ui/trace-events index f5faa149d2..fb253c1666 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -130,6 +130,7 @@ xkeymap_keymap(const char *name) "keymap '%s'" # clipboard.c clipboard_check_serial(int cur, int recv, bool ok) "cur:%d recv:%d %d" +clipboard_reset_serial(void) "" # vdagent.c vdagent_fe_open(bool fe_open) "fe_open=%d" diff --git a/ui/vdagent.c b/ui/vdagent.c index cb74739bc4..2a4b3574b1 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -720,6 +720,8 @@ static void vdagent_chr_recv_caps(VDAgentChardev *vd, VDAgentMessage *msg) memset(vd->last_serial, 0, sizeof(vd->last_serial)); if (have_clipboard(vd) && vd->cbpeer.notifier.notify == NULL) { + qemu_clipboard_reset_serial(); + vd->cbpeer.name = "vdagent"; vd->cbpeer.notifier.notify = vdagent_clipboard_notify; vd->cbpeer.request = vdagent_clipboard_request; -- cgit 1.4.1 From 865714cb3b88320e2e840eb851d084c757511a12 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Wed, 17 Jul 2024 21:15:40 +0400 Subject: ui/vdagent: send caps on fe_open MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spice-vdagentd doesn't send capabilities again on host/client disconnect (but when the session agent connects and sends a GUEST_XORG_RESOLUTION message) When the dbus client disconnects, vdagent_disconnect() is called to reset the agent state. Capabilities must be negotiated again on reconnection. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20240717171541.201525-5-marcandre.lureau@redhat.com> --- ui/vdagent.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'ui/vdagent.c') diff --git a/ui/vdagent.c b/ui/vdagent.c index 2a4b3574b1..724eff972f 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -185,7 +185,7 @@ static void vdagent_send_msg(VDAgentChardev *vd, VDAgentMessage *msg) 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) + sizeof(VDAgentAnnounceCapabilities) + @@ -205,6 +205,7 @@ static void vdagent_send_caps(VDAgentChardev *vd) #endif } + caps->request = request; vdagent_send_msg(vd, msg); } @@ -711,7 +712,7 @@ static void vdagent_chr_recv_caps(VDAgentChardev *vd, VDAgentMessage *msg) vd->caps = caps->caps[0]; if (caps->request) { - vdagent_send_caps(vd); + vdagent_send_caps(vd, false); } if (have_mouse(vd) && 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; } + vdagent_send_caps(vd, true); } static void vdagent_chr_parse(QemuOpts *opts, ChardevBackend *backend, -- cgit 1.4.1