From: Marc-André Lureau <marcandre.lur...@redhat.com> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> Acked-by: Gerd Hoffmann <kra...@redhat.com> --- include/ui/clipboard.h | 10 ++++++++++ ui/clipboard.c | 15 +++++++++++++++ 2 files changed, 25 insertions(+)
diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h index e590b453c8b7..2c6488c1eec8 100644 --- a/include/ui/clipboard.h +++ b/include/ui/clipboard.h @@ -172,6 +172,16 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer, */ QemuClipboardInfo *qemu_clipboard_info(QemuClipboardSelection selection); +/** + * qemu_clipboard_check_serial + * + * @info: clipboard info. + * @client: whether to check from the client context and priority. + * + * Return TRUE if the @info has a higher serial than the current clipboard. + */ +bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client); + /** * qemu_clipboard_info_new * diff --git a/ui/clipboard.c b/ui/clipboard.c index 743b39edf424..ffbd80e5c60e 100644 --- a/ui/clipboard.c +++ b/ui/clipboard.c @@ -41,6 +41,21 @@ void qemu_clipboard_peer_release(QemuClipboardPeer *peer, } } +bool qemu_clipboard_check_serial(QemuClipboardInfo *info, bool client) +{ + if (!info->has_serial || + !cbinfo[info->selection] || + !cbinfo[info->selection]->has_serial) { + return true; + } + + if (client) { + return cbinfo[info->selection]->serial >= info->serial; + } else { + return cbinfo[info->selection]->serial > info->serial; + } +} + void qemu_clipboard_update(QemuClipboardInfo *info) { QemuClipboardNotify notify = { -- 2.34.1.8.g35151cf07204