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>
This commit is contained in:
parent
64d3fec76c
commit
410840cdb1
@ -1,5 +1,6 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "ui/clipboard.h"
|
#include "ui/clipboard.h"
|
||||||
|
#include "trace.h"
|
||||||
|
|
||||||
static NotifierList clipboard_notifiers =
|
static NotifierList clipboard_notifiers =
|
||||||
NOTIFIER_LIST_INITIALIZER(clipboard_notifiers);
|
NOTIFIER_LIST_INITIALIZER(clipboard_notifiers);
|
||||||
@ -43,17 +44,23 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer,
|
|||||||
|
|
||||||
bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client)
|
bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client)
|
||||||
{
|
{
|
||||||
|
bool ok;
|
||||||
|
|
||||||
if (!info->has_serial ||
|
if (!info->has_serial ||
|
||||||
!cbinfo[info->selection] ||
|
!cbinfo[info->selection] ||
|
||||||
!cbinfo[info->selection]->has_serial) {
|
!cbinfo[info->selection]->has_serial) {
|
||||||
|
trace_clipboard_check_serial(-1, -1, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client) {
|
if (client) {
|
||||||
return cbinfo[info->selection]->serial >= info->serial;
|
ok = cbinfo[info->selection]->serial >= info->serial;
|
||||||
} else {
|
} 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)
|
void qemu_clipboard_update(QemuClipboardInfo *info)
|
||||||
|
@ -127,15 +127,20 @@ xkeymap_vendor(const char *name) "vendor '%s'"
|
|||||||
xkeymap_keycodes(const char *name) "keycodes '%s'"
|
xkeymap_keycodes(const char *name) "keycodes '%s'"
|
||||||
xkeymap_keymap(const char *name) "keymap '%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.c
|
||||||
vdagent_open(void) ""
|
vdagent_open(void) ""
|
||||||
vdagent_close(void) ""
|
vdagent_close(void) ""
|
||||||
|
vdagent_disconnect(void) ""
|
||||||
vdagent_send(const char *name) "msg %s"
|
vdagent_send(const char *name) "msg %s"
|
||||||
vdagent_send_empty_clipboard(void) ""
|
vdagent_send_empty_clipboard(void) ""
|
||||||
vdagent_recv_chunk(uint32_t size) "size %d"
|
vdagent_recv_chunk(uint32_t size) "size %d"
|
||||||
vdagent_recv_msg(const char *name, uint32_t size) "msg %s, size %d"
|
vdagent_recv_msg(const char *name, uint32_t size) "msg %s, size %d"
|
||||||
vdagent_peer_cap(const char *name) "cap %s"
|
vdagent_peer_cap(const char *name) "cap %s"
|
||||||
vdagent_cb_grab_selection(const char *name) "selection %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_grab_type(const char *name) "type %s"
|
||||||
vdagent_cb_serial_discard(uint32_t current, uint32_t received) "current=%u, received=%u"
|
vdagent_cb_serial_discard(uint32_t current, uint32_t received) "current=%u, received=%u"
|
||||||
|
|
||||||
|
@ -533,6 +533,8 @@ static void vdagent_clipboard_recv_grab(VDAgentChardev *vd, uint8_t s, uint32_t
|
|||||||
info->has_serial = true;
|
info->has_serial = true;
|
||||||
info->serial = *(uint32_t *)data;
|
info->serial = *(uint32_t *)data;
|
||||||
if (info->serial < vd->last_serial[s]) {
|
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 */
|
/* discard lower-ordering guest grab */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -853,6 +855,8 @@ static void vdagent_chr_accept_input(Chardev *chr)
|
|||||||
|
|
||||||
static void vdagent_disconnect(VDAgentChardev *vd)
|
static void vdagent_disconnect(VDAgentChardev *vd)
|
||||||
{
|
{
|
||||||
|
trace_vdagent_disconnect();
|
||||||
|
|
||||||
buffer_reset(&vd->outbuf);
|
buffer_reset(&vd->outbuf);
|
||||||
vdagent_reset_bufs(vd);
|
vdagent_reset_bufs(vd);
|
||||||
vd->caps = 0;
|
vd->caps = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user