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 :|