[Spice-devel] [PATCH] vdagent: receiving a clipboard request with an unsupported type is replied by data with a none type

Hans de Goede hdegoede at redhat.com
Wed Oct 6 07:47:10 PDT 2010


ack.

On 10/06/2010 04:41 PM, Arnon Gilboa wrote:
> Currently we send a VD_AGENT_CLIPBOARD_RELEASE when we receive a
> VD_AGENT_CLIPBOARD_REQUEST with a type which we do not support. This is not
> correct, as this means given up clipboard ownership while we may be able
> to answer requests with different types. The correct response is to
> nack the request by sending a VD_AGENT_CLIPBOARD (data) message with a type
> of VD_AGENT_CLIPBOARD_NONE.(citing hansg)
> ---
>   vdagent/vdagent.cpp |    5 +++--
>   1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/vdagent/vdagent.cpp b/vdagent/vdagent.cpp
> index bf48e17..f3f571b 100644
> --- a/vdagent/vdagent.cpp
> +++ b/vdagent/vdagent.cpp
> @@ -803,7 +803,7 @@ bool VDAgent::on_clipboard_grab()
>
>       //FIXME: use all available types rather than just the first one
>       uint32_t grab_types[] = {type};
> -    return write_message(VD_AGENT_CLIPBOARD_GRAB, sizeof(grab_types),&grab_types);
> +    return write_message(VD_AGENT_CLIPBOARD_GRAB, sizeof(grab_types),&grab_types);
>   }
>
>   // In delayed rendering, Windows requires us to SetClipboardData before we return from
> @@ -986,7 +986,8 @@ void VDAgent::dispatch_message(VDAgentMessage* msg, uint32_t port)
>       case VD_AGENT_CLIPBOARD_REQUEST:
>           res = a->handle_clipboard_request((VDAgentClipboardRequest*)msg->data);
>           if (!res) {
> -            res = a->write_message(VD_AGENT_CLIPBOARD_RELEASE);
> +            VDAgentClipboard clipboard = {VD_AGENT_CLIPBOARD_NONE};
> +            res = a->write_message(VD_AGENT_CLIPBOARD, sizeof(clipboard),&clipboard);
>           }
>           break;
>       case VD_AGENT_CLIPBOARD_RELEASE:


More information about the Spice-devel mailing list