ui: add some vdagent related traces
This helps debugging clipboard serial sync issues.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20220912102455.111765-2-marcandre.lureau@redhat.com>
[ kraxel: code style fix ]
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
diff --git a/ui/clipboard.c b/ui/clipboard.c
index 9079ef8..cd5382f 100644
--- a/ui/clipboard.c
+++ b/ui/clipboard.c
@@ -1,5 +1,6 @@
#include "qemu/osdep.h"
#include "ui/clipboard.h"
+#include "trace.h"
static NotifierList clipboard_notifiers =
NOTIFIER_LIST_INITIALIZER(clipboard_notifiers);
@@ -43,17 +44,23 @@
bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client)
{
+ bool ok;
+
if (!info->has_serial ||
!cbinfo[info->selection] ||
!cbinfo[info->selection]->has_serial) {
+ trace_clipboard_check_serial(-1, -1, true);
return true;
}
if (client) {
- return cbinfo[info->selection]->serial >= info->serial;
+ ok = cbinfo[info->selection]->serial >= info->serial;
} else {
- return cbinfo[info->selection]->serial > info->serial;
+ ok = cbinfo[info->selection]->serial > info->serial;
}
+
+ trace_clipboard_check_serial(cbinfo[info->selection]->serial, info->serial, ok);
+ return ok;
}
void qemu_clipboard_update(QemuClipboardInfo *info)
diff --git a/ui/trace-events b/ui/trace-events
index a922f00..977577f 100644
--- a/ui/trace-events
+++ b/ui/trace-events
@@ -127,15 +127,20 @@
xkeymap_keycodes(const char *name) "keycodes '%s'"
xkeymap_keymap(const char *name) "keymap '%s'"
+# clipboard.c
+clipboard_check_serial(int cur, int recv, bool ok) "cur:%d recv:%d %d"
+
# vdagent.c
vdagent_open(void) ""
vdagent_close(void) ""
+vdagent_disconnect(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"
vdagent_cb_grab_selection(const char *name) "selection %s"
+vdagent_cb_grab_discard(const char *name, int cur, int recv) "selection %s, cur:%d recv:%d"
vdagent_cb_grab_type(const char *name) "type %s"
vdagent_cb_serial_discard(uint32_t current, uint32_t received) "current=%u, received=%u"
diff --git a/ui/vdagent.c b/ui/vdagent.c
index a899eed..58ce750 100644
--- a/ui/vdagent.c
+++ b/ui/vdagent.c
@@ -533,6 +533,8 @@
info->has_serial = true;
info->serial = *(uint32_t *)data;
if (info->serial < vd->last_serial[s]) {
+ trace_vdagent_cb_grab_discard(GET_NAME(sel_name, s),
+ vd->last_serial[s], info->serial);
/* discard lower-ordering guest grab */
return;
}
@@ -853,6 +855,8 @@
static void vdagent_disconnect(VDAgentChardev *vd)
{
+ trace_vdagent_disconnect();
+
buffer_reset(&vd->outbuf);
vdagent_reset_bufs(vd);
vd->caps = 0;