[RFC QEMU PATCH] ui: Make the DisplayType enum entries conditional
Thomas Huth
thuth at redhat.com
Wed Jun 9 14:36:05 UTC 2021
On 09/06/2021 15.16, Markus Armbruster wrote:
> Thomas Huth <thuth at redhat.com> writes:
>
>> Libvirt's "domcapabilities" command has a way to state whether
>> certain graphic frontends are available in QEMU or not. Originally,
>> libvirt looked at the "--help" output of the QEMU binary to determine
>> whether SDL was available or not (by looking for the "-sdl" parameter
>> in the help text), but since libvirt stopped doing this analysis of
>> the help text, the detection of SDL is currently broken, see:
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1790902
>>
>> QEMU should provide a way via the QMP interface instead. The simplest
>> way, without introducing additional commands, is to make the DisplayType
>> enum entries conditional, so that the enum only contains the entries if
>> the corresponding CONFIG_xxx switches have been set. Unfortunately, this
>> only works for sdl, cocoa and spice, since gtk, egl-headless and curses
>> are hard-wired in the "data" section of the DisplayOptions, and thus
>> unfortunately always have to be defined.
>
> Here:
>
> { 'union' : 'DisplayOptions',
> 'base' : { 'type' : 'DisplayType',
> '*full-screen' : 'bool',
> '*window-close' : 'bool',
> '*show-cursor' : 'bool',
> '*gl' : 'DisplayGLMode' },
> 'discriminator' : 'type',
> 'data' : { 'gtk' : 'DisplayGTK',
> 'curses' : 'DisplayCurses',
> 'egl-headless' : 'DisplayEGLHeadless'} }
>
> Flat union branches can be made conditional like so:
>
> 'data' : { 'gtk' : { 'type': 'DisplayGTK',
> 'if': 'defined(CONFIG_GTK)' },
>
> Then you should be able to make the corresponding enum value
> conditional, too.
Thanks for the hint, I'll give it a try!
Thomas
More information about the libvir-list
mailing list