aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui/trace-events1
-rw-r--r--ui/vdagent.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/ui/trace-events b/ui/trace-events
index 1b5f87bc09..b9c0dd0fa1 100644
--- a/ui/trace-events
+++ b/ui/trace-events
@@ -129,6 +129,7 @@ xkeymap_keymap(const char *name) "keymap '%s'"
vdagent_open(void) ""
vdagent_close(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"
diff --git a/ui/vdagent.c b/ui/vdagent.c
index cd07937a4b..cd49da1ffa 100644
--- a/ui/vdagent.c
+++ b/ui/vdagent.c
@@ -375,6 +375,16 @@ static void vdagent_send_clipboard_data(VDAgentChardev *vd,
vdagent_send_msg(vd, msg);
}
+static void vdagent_send_empty_clipboard_data(VDAgentChardev *vd,
+ QemuClipboardSelection selection,
+ QemuClipboardType type)
+{
+ g_autoptr(QemuClipboardInfo) info = qemu_clipboard_info_new(&vd->cbpeer, selection);
+
+ trace_vdagent_send_empty_clipboard();
+ vdagent_send_clipboard_data(vd, info, type);
+}
+
static void vdagent_clipboard_notify(Notifier *notifier, void *data)
{
VDAgentChardev *vd = container_of(notifier, VDAgentChardev, cbpeer.update);
@@ -482,6 +492,8 @@ static void vdagent_clipboard_recv_request(VDAgentChardev *vd, uint8_t s, uint32
vd->cbpending[s] |= (1 << type);
qemu_clipboard_request(info, type);
}
+ } else {
+ vdagent_send_empty_clipboard_data(vd, s, type);
}
}