summaryrefslogtreecommitdiffstats
path: root/ui/clipboard.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui/clipboard.c')
-rw-r--r--ui/clipboard.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/ui/clipboard.c b/ui/clipboard.c
index 9079ef829b..3d14bffaf8 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 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer,
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 = info->serial >= cbinfo[info->selection]->serial;
} else {
- return cbinfo[info->selection]->serial > info->serial;
+ ok = info->serial > cbinfo[info->selection]->serial;
}
+
+ trace_clipboard_check_serial(cbinfo[info->selection]->serial, info->serial, ok);
+ return ok;
}
void qemu_clipboard_update(QemuClipboardInfo *info)
@@ -132,7 +139,14 @@ void qemu_clipboard_request(QemuClipboardInfo *info,
void qemu_clipboard_reset_serial(void)
{
QemuClipboardNotify notify = { .type = QEMU_CLIPBOARD_RESET_SERIAL };
+ int i;
+ for (i = 0; i < QEMU_CLIPBOARD_SELECTION__COUNT; i++) {
+ QemuClipboardInfo *info = qemu_clipboard_info(i);
+ if (info) {
+ info->serial = 0;
+ }
+ }
notifier_list_notify(&clipboard_notifiers, &notify);
}