> Add a "guest" flag to QemuClipboardPeer and set it on vdagent peer. > > Use the flag to keep track of number of registered guest peers and > allow to query for their presence with > qemu_clipboard_guest_peer_present(). > > This change makes it possible for a clipboard peer to determine if > any guest side peers are present so they can tell whether a guest is > actually able to participate in clipboard exchange. > > Signed-off-by: Lukasz Kornicki <[email protected]> > Message-ID: <[email protected]> > --- > include/ui/clipboard.h | 9 +++++++++ > ui/clipboard.c | 17 +++++++++++++++++ > ui/vdagent.c | 1 + > 3 files changed, 27 insertions(+) > > diff --git a/include/ui/clipboard.h b/include/ui/clipboard.h > index 6166af513906..250f1d8ea53e 100644 > --- a/include/ui/clipboard.h > +++ b/include/ui/clipboard.h > @@ -62,6 +62,7 @@ enum QemuClipboardSelection { > * struct QemuClipboardPeer > * > * @name: peer name. > + * @guest: is peer guest side. > * @notifier: notifier for clipboard updates. > * @request: callback for clipboard data requests. > * > @@ -69,6 +70,7 @@ enum QemuClipboardSelection { > */ > struct QemuClipboardPeer { > const char *name; > + bool guest; > Notifier notifier; > void (*request)(QemuClipboardInfo *info, > QemuClipboardType type); > @@ -179,6 +181,13 @@ void qemu_clipboard_peer_register(QemuClipboardPeer > *peer); > */ > void qemu_clipboard_peer_unregister(QemuClipboardPeer *peer); > > +/** > + * qemu_clipboard_guest_peer_present > + * > + * Return TRUE if a guest side clipboard peer is currently registered. > + */ > +bool qemu_clipboard_guest_peer_present(void); > + > /** > * qemu_clipboard_peer_owns > * > diff --git a/ui/clipboard.c b/ui/clipboard.c > index 3d8f58a85508..f750b494eb6b 100644 > --- a/ui/clipboard.c > +++ b/ui/clipboard.c > @@ -12,6 +12,8 @@ static VMChangeStateEntry *cb_change_state_entry = NULL; > > static bool cb_reset_serial_on_resume = false; > > +static int guest_peer_count;
Rather than adding an extra global (that must be sync), why not simply iterate the clipboard_notifiers? Reviewed-by: Marc-André Lureau <[email protected]> -- Marc-André Lureau <[email protected]>
