On Mon, Nov 2, 2026 at 2:11 PM Lucas Kornicki
<[email protected]> wrote:
>
>
> On 10/31/26 08:23, [email protected] wrote:
> >> 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]>
>
> Good question. I wasn't positive if it was thread safe to walk the list
> at the time,
> hence going with a global counter felt like a safer bet since there are
> others like it.
>
> It looks like this is not an issue and cost of recomputing seems reasonable.
> Since the series was pulled, should I send in a separate patch fixing this?

yes, should be acceptable as minor fix during rc, otherwise I will
just queue it for later
thanks


Reply via email to