[RFC 1/3] vdagent: Wrap vdagent_register_to_qemu_clipboard function

yong.huang@smartx.com posted 3 patches 10 months, 3 weeks ago
[RFC 1/3] vdagent: Wrap vdagent_register_to_qemu_clipboard function
Posted by yong.huang@smartx.com 10 months, 3 weeks ago
From: Hyman Huang <yong.huang@smartx.com>

For direct use in the upcoming commit, wrap the vdagent
registry logic as vdagent_register_to_qemu_clipboard.

Meanwhile, add a trace event for vdagent_recv_caps.

Signed-off-by: Hyman Huang <yong.huang@smartx.com>
---
 ui/trace-events |  1 +
 ui/vdagent.c    | 23 ++++++++++++++++-------
 2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/ui/trace-events b/ui/trace-events
index 3da0d5e280..427a8383cb 100644
--- a/ui/trace-events
+++ b/ui/trace-events
@@ -140,6 +140,7 @@ 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_recv_caps(uint32_t caps) "received caps %u"
 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"
diff --git a/ui/vdagent.c b/ui/vdagent.c
index 724eff972f..7a1cf674d0 100644
--- a/ui/vdagent.c
+++ b/ui/vdagent.c
@@ -694,6 +694,18 @@ static void vdagent_chr_open(Chardev *chr,
     *be_opened = true;
 }
 
+static void vdagent_register_to_qemu_clipboard(VDAgentChardev *vd)
+{
+    if (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;
+        qemu_clipboard_peer_register(&vd->cbpeer);
+    }
+}
+
 static void vdagent_chr_recv_caps(VDAgentChardev *vd, VDAgentMessage *msg)
 {
     VDAgentAnnounceCapabilities *caps = (void *)msg->data;
@@ -711,6 +723,8 @@ static void vdagent_chr_recv_caps(VDAgentChardev *vd, VDAgentMessage *msg)
     }
 
     vd->caps = caps->caps[0];
+    trace_vdagent_recv_caps(vd->caps);
+
     if (caps->request) {
         vdagent_send_caps(vd, false);
     }
@@ -720,13 +734,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;
-        qemu_clipboard_peer_register(&vd->cbpeer);
+    if (have_clipboard(vd)) {
+        vdagent_register_to_qemu_clipboard(vd);
     }
 }
 
-- 
2.27.0