On Tue, Nov 10, 2015 at 06:22:32AM -0500, John Ferlan wrote: > > > On 11/10/2015 05:31 AM, Daniel P. Berrange wrote: > > On Mon, Nov 09, 2015 at 06:28:03PM -0500, John Ferlan wrote: > >> > >> > >> On 11/09/2015 11:24 AM, Daniel P. Berrange wrote: > >>> The -sdl and -net ...name=XXX arguments were both introduced > >>> in QEMU 0.10, so the QEMU driver can assume they are always > >>> available. > >>> > >> > >> The -sdl wasn't really removed it seems - although it did me peeking > >> into the rabbit hole for a make check failure... > > > >> After a bit of debugging - qemuParseCommandLine has the following: > >> > >> } else if (STRPREFIX(arg, "-hd") || > >> STRPREFIX(arg, "-sd") || > >> STRPREFIX(arg, "-fd") || > >> STREQ(arg, "-cdrom")) { > >> WANT_VALUE(); > >> > >> If I add: > >> > >> } else if (STREQ(arg, "-sdl")) { > >> /* Ignore */ > >> > >> Just before that, then things are happy again. > > > > Rather than ignoring it, I added this: > > > > virDomainGraphicsDefPtr sdl; > > if (VIR_ALLOC(sdl) < 0) > > goto error; > > sdl->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL; > > > > This seems to duplicate an allocation later : > > if (!nographics && def->ngraphics == 0) { That deals with case where QEMU would previously default to SDL if no args are listed. If you specified '-vnc blah -sdl' it would not trigger though, so we need to improve that. > It's also not FREE'd or appended to def->graphics Sigh, so how about this instead, so we just explicitly trigger the existing SDL codepath: diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c016d43..792ada3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -12759,6 +12759,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps, qemuDomainCmdlineDefPtr cmd = NULL; virDomainDiskDefPtr disk = NULL; const char *ceph_args = qemuFindEnv(progenv, "CEPH_ARGS"); + bool have_sdl = false; if (pidfile) *pidfile = NULL; @@ -12982,10 +12983,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps, goto error; } } else if (STREQ(arg, "-sdl")) { - virDomainGraphicsDefPtr sdl; - if (VIR_ALLOC(sdl) < 0) - goto error; - sdl->type = VIR_DOMAIN_GRAPHICS_TYPE_SDL; + have_sdl = true; } else if (STREQ(arg, "-m")) { int mem; WANT_VALUE(); @@ -13672,7 +13670,7 @@ qemuParseCommandLine(virCapsPtr qemuCaps, VIR_FREE(capsdata); } - if (!nographics && def->ngraphics == 0) { + if (!nographics && (def->ngraphics == 0 || have_sdl)) { virDomainGraphicsDefPtr sdl; const char *display = qemuFindEnv(progenv, "DISPLAY"); const char *xauth = qemuFindEnv(progenv, "XAUTHORITY"); 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 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list