diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-07-19 19:49:56 +0400 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-12-21 10:50:21 +0400 |
commit | 505dbf9b99e937853c02d7995f9eebe95508e8d4 (patch) | |
tree | 1e710bb13a8d7d17045636fe98bca04b349a2812 | |
parent | 349504e5a1533c795cd5f72e629766b996982050 (diff) | |
download | qemu-505dbf9b99e937853c02d7995f9eebe95508e8d4.zip qemu-505dbf9b99e937853c02d7995f9eebe95508e8d4.tar.gz qemu-505dbf9b99e937853c02d7995f9eebe95508e8d4.tar.bz2 |
ui/clipboard: add a clipboard reset serial event
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-rw-r--r-- | include/ui/clipboard.h | 9 | ||||
-rw-r--r-- | ui/clipboard.c | 7 | ||||
-rw-r--r-- | ui/cocoa.m | 3 | ||||
-rw-r--r-- | ui/gtk-clipboard.c | 3 | ||||
-rw-r--r-- | ui/vdagent.c | 12 | ||||
-rw-r--r-- | ui/vnc-clipboard.c | 3 |
6 files changed, 37 insertions, 0 deletions
diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h index 2c6488c..ce76aa4 100644 --- a/include/ui/clipboard.h +++ b/include/ui/clipboard.h @@ -73,11 +73,13 @@ struct QemuClipboardPeer { * enum QemuClipboardNotifyType * * @QEMU_CLIPBOARD_UPDATE_INFO: clipboard info update + * @QEMU_CLIPBOARD_RESET_SERIAL: reset clipboard serial * * Clipboard notify type. */ enum QemuClipboardNotifyType { QEMU_CLIPBOARD_UPDATE_INFO, + QEMU_CLIPBOARD_RESET_SERIAL, }; /** @@ -231,6 +233,13 @@ void qemu_clipboard_info_unref(QemuClipboardInfo *info); void qemu_clipboard_update(QemuClipboardInfo *info); /** + * qemu_clipboard_reset_serial + * + * Reset the clipboard serial. + */ +void qemu_clipboard_reset_serial(void); + +/** * qemu_clipboard_request * * @info: clipboard info. diff --git a/ui/clipboard.c b/ui/clipboard.c index ffbd80e..82572ea 100644 --- a/ui/clipboard.c +++ b/ui/clipboard.c @@ -129,6 +129,13 @@ void qemu_clipboard_request(QemuClipboardInfo *info, info->owner->request(info, type); } +void qemu_clipboard_reset_serial(void) +{ + QemuClipboardNotify notify = { .type = QEMU_CLIPBOARD_RESET_SERIAL }; + + notifier_list_notify(&clipboard_notifiers, ¬ify); +} + void qemu_clipboard_set_data(QemuClipboardPeer *peer, QemuClipboardInfo *info, QemuClipboardType type, @@ -1837,6 +1837,9 @@ static void cocoa_clipboard_notify(Notifier *notifier, void *data) case QEMU_CLIPBOARD_UPDATE_INFO: cocoa_clipboard_update_info(notify->info); return; + case QEMU_CLIPBOARD_RESET_SERIAL: + /* ignore */ + return; } } diff --git a/ui/gtk-clipboard.c b/ui/gtk-clipboard.c index 44ff810..e0b8b28 100644 --- a/ui/gtk-clipboard.c +++ b/ui/gtk-clipboard.c @@ -127,6 +127,9 @@ static void gd_clipboard_notify(Notifier *notifier, void *data) case QEMU_CLIPBOARD_UPDATE_INFO: gd_clipboard_update_info(gd, notify->info); return; + case QEMU_CLIPBOARD_RESET_SERIAL: + /* ignore */ + return; } } diff --git a/ui/vdagent.c b/ui/vdagent.c index b4fdae6..7ea4bc5 100644 --- a/ui/vdagent.c +++ b/ui/vdagent.c @@ -466,6 +466,15 @@ static void vdagent_clipboard_update_info(VDAgentChardev *vd, } } +static void vdagent_clipboard_reset_serial(VDAgentChardev *vd) +{ + Chardev *chr = CHARDEV(vd); + + /* reopen the agent connection to reset the serial state */ + qemu_chr_be_event(chr, CHR_EVENT_CLOSED); + qemu_chr_be_event(chr, CHR_EVENT_OPENED); +} + static void vdagent_clipboard_notify(Notifier *notifier, void *data) { VDAgentChardev *vd = @@ -476,6 +485,9 @@ static void vdagent_clipboard_notify(Notifier *notifier, void *data) case QEMU_CLIPBOARD_UPDATE_INFO: vdagent_clipboard_update_info(vd, notify->info); return; + case QEMU_CLIPBOARD_RESET_SERIAL: + vdagent_clipboard_reset_serial(vd); + return; } } diff --git a/ui/vnc-clipboard.c b/ui/vnc-clipboard.c index 6a0b105..d48f75e 100644 --- a/ui/vnc-clipboard.c +++ b/ui/vnc-clipboard.c @@ -230,6 +230,9 @@ static void vnc_clipboard_notify(Notifier *notifier, void *data) case QEMU_CLIPBOARD_UPDATE_INFO: vnc_clipboard_update_info(vs, notify->info); return; + case QEMU_CLIPBOARD_RESET_SERIAL: + /* ignore */ + return; } } |