qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] vnc: fix update stalls


From: Ying Fang
Subject: Re: [Qemu-devel] [PATCH] vnc: fix update stalls
Date: Wed, 6 Mar 2019 09:29:20 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

On 2019/3/5 21:09, Gerd Hoffmann wrote:
> vnc aborts display update jobs on video mode switches and page flips.
> That can cause vnc update stalls in case an unfinished vnc job gets
> aborted.  The vnc client will never receive the requested update then.
> Fix that by copying the state from job_update back to update in that
> case.
> 
> Reports complain about stalls with two or more clients being connected
> at the same time, on some but not all connections.  I suspect it can
> also happen with a single connection, multiple connections only make
> this more much likely to happen.
> 
> Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1662260
> Reported-by: Ying Fang <address@hidden>
> Signed-off-by: Gerd Hoffmann <address@hidden>

Reviewed-by: Ying Fang <address@hidden>

> ---
>  ui/vnc.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/ui/vnc.c b/ui/vnc.c
> index da4a21d4ce94..2f2ab62fcf71 100644
> --- a/ui/vnc.c
> +++ b/ui/vnc.c
> @@ -700,6 +700,12 @@ static void vnc_abort_display_jobs(VncDisplay *vd)
>      }
>      QTAILQ_FOREACH(vs, &vd->clients, next) {
>          vnc_lock_output(vs);
> +        if (vs->update == VNC_STATE_UPDATE_NONE &&
> +            vs->job_update != VNC_STATE_UPDATE_NONE) {
> +            /* job aborted before completion */
> +            vs->update = vs->job_update;
> +            vs->job_update = VNC_STATE_UPDATE_NONE;
> +        }
>          vs->abort = false;
>          vnc_unlock_output(vs);
>      }
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]