From: "Daniel P. Berrange" <berrange@redhat.com>
To: Peter Lieven <pl@kamp.de>
Cc: Peter Maydell <peter.maydell@linaro.org>,
qemu-stable <qemu-stable@nongnu.org>,
QEMU Developers <qemu-devel@nongnu.org>,
Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [Qemu-stable] [PATCH v2 for 2.7] ui: fix refresh of VNC server surface
Date: Thu, 25 Aug 2016 08:46:44 -0400 [thread overview]
Message-ID: <20160825124644.GC22041@redhat.com> (raw)
In-Reply-To: <684a9d40-5f63-4c31-e192-9c08db615aa8@kamp.de>
On Thu, Aug 25, 2016 at 09:15:52AM +0200, Peter Lieven wrote:
> Am 24.08.2016 um 17:49 schrieb Daniel P. Berrange:
> > On Wed, Aug 24, 2016 at 04:46:31PM +0100, Peter Maydell wrote:
> > > On 23 August 2016 at 07:50, Peter Lieven <pl@kamp.de> wrote:
> > > > Am 16.08.2016 um 18:30 schrieb Daniel P. Berrange:
> > > > > In previous commit
> > > > >
> > > > > commit c7628bff4138ce906a3620d12e0820c1cf6c140d
> > > > > Author: Gerd Hoffmann <kraxel@redhat.com>
> > > > > Date: Fri Oct 30 12:10:09 2015 +0100
> > > > >
> > > > > vnc: only alloc server surface with clients connected
> > > > >
> > > > > the VNC server was changed so that the 'vd->server' pixman
> > > > > image was only allocated when a client is connected.
> > > > >
> > > > > Since then if a client disconnects and then reconnects to
> > > > > the VNC server all they will see is a black screen until
> > > > > they do something that triggers a refresh. On a graphical
> > > > > desktop this is not often noticed since there's many things
> > > > > going on which cause a refresh. On a plain text console it
> > > > > is really obvious since nothing refreshes frequently.
> > > > >
> > > > > The problem is that the VNC server didn't update the guest
> > > > > dirty bitmap, so still believes its server image is in sync
> > > > > with the guest contents.
> > > > >
> > > > > To fix this we must explicitly mark the entire guest desktop
> > > > > as dirty after re-creating the server surface. Move this
> > > > > logic into vnc_update_server_surface() so it is guaranteed
> > > > > to be call in all code paths that re-create the surface
> > > > > instead of only in vnc_dpy_switch()
> > > > >
> > > > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> > > >
> > > > I noticed that these patches is as well not in master yet and therefore
> > > > not included in the 2.7.0-rc4 tagged yesterday.
> > > Dan, Gerd -- we're going to need an rc5 anyway -- can you
> > > comment on whether this patch is "should be in rc5"
> > > material? (If it is I can commit it to master directly.)
> > I think it should be, as the VNC server is pretty unusable when it does
> > not refresh the screen when you connect, but I'll let Gerd decide in case
> > there's some implication in my patch that I've mis-understood.
>
> Hi Daniel,
>
> I have had a look at the code and currently I do not understand why you
> ran into a blank screen. The server surface is not created if there is no
> client connected, this is correct. But the dirty bitmap for the server
> exists even if there is no client connected. So the status of the dirty bitmap
> should be the same with or without your patch.
IIUC, the dirty bitmap is used to decide when to update the server surface
from the guest framebuffer. When the new client connects and we create a
new server surface, the dirty bitmap is clean, so QEMU never copies the
guest framebuffer into the new server surface hence I just get a blank
screen.
> Can you tell what exactly you tried out to reproduce a potential issue?
Boot a Fedora guest, in text mode (ie no Xorg graphics). Then simply
disconnect & connect and I'll always get a black screen until I do something
that causes Linux to update the screen.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
next prev parent reply other threads:[~2016-08-25 12:46 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-16 16:30 [Qemu-devel] [PATCH v2 for 2.7] ui: fix refresh of VNC server surface Daniel P. Berrange
2016-08-23 6:50 ` [Qemu-devel] [Qemu-stable] " Peter Lieven
2016-08-24 15:46 ` Peter Maydell
2016-08-24 15:49 ` Daniel P. Berrange
2016-08-25 7:15 ` Peter Lieven
2016-08-25 12:46 ` Daniel P. Berrange [this message]
2016-08-26 11:38 ` Peter Lieven
2016-08-29 13:44 ` Peter Lieven
2016-08-30 10:48 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160825124644.GC22041@redhat.com \
--to=berrange@redhat.com \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pl@kamp.de \
--cc=qemu-devel@nongnu.org \
--cc=qemu-stable@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).