[Top][All Lists]

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

Re: [Qemu-devel] Re: [PATCH] update server bits on vnc_update

From: Stefano Stabellini
Subject: Re: [Qemu-devel] Re: [PATCH] update server bits on vnc_update
Date: Tue, 21 Jul 2009 13:56:07 +0100
User-agent: Alpine 2.00 (DEB 1167 2008-08-23)

On Tue, 21 Jul 2009, Gerd Hoffmann wrote:
> On 07/18/09 06:47, Glauber Costa wrote:
> > Since the server/guest split in vnc architecture, we
> > no longer update the server bits on large updates. Result
> > is screen gets garbled, specially on scroll actions.
> >
> > I must admit I don't fully understand our vnc code, but after
> > a careful reading, it seemed to me the proposed patch would fix
> > it, and it indeed, works.
> NAK.
> VNC screen update workflow is this:
>    (1) vnc_update() is called to mark a region as dirty,
>        the guest bitmap is updated accordingly.  May happen
>        multiple times.
>    (2) vnc_update_client() is called by timer.  It walks
>        the guest bitmap.  For dirty regions it checks whenever
>        guest and server bitmap are *really* different, if so
>        it does a guest->server copy and updates the server
>        dirty bitmap.
>    (3) vnc_update_client() walks the server dirty map and sends
>        over the changes to the client.

As a side note: I was reading the new vnc multiclient code to understand
how the refresh works now, and I have just noticed something that I
think is wrong:

we call vga_hw_update in vnc_update_client, that means we call it once
per vnc client connected! We should call it only once, probably in a
separate timer, that is enabled only if at least one client is connect.

I also don't like the fact that we are allocating a server surface per
client connected, this can become a problem very fast: I think we could
probably get away with just one server surface for all the clients.

reply via email to

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