[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/2] vl: add -vga help support
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH 2/2] vl: add -vga help support |
Date: |
Fri, 12 Apr 2019 18:15:52 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 |
On 4/12/19 5:27 PM, Marc-André Lureau wrote:
> Provide help output similar to other argument help handling:
>
> $ qemu-system-x86_64 -vga help
> none
> std standard VGA (default)
> cirrus Cirrus VGA
> vmware VMWare SVGA
> xenfb
> qxl QXL VGA
> virtio Virtio VG
Maybe you can show the previous behavior:
$ qemu-system-x86_64 -vga help
qemu-system-x86_64: unknown vga type: help
>
> Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> vl.c | 40 +++++++++++++++++++++++++++++++---------
> 1 file changed, 31 insertions(+), 9 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index 0a96232e95..840c45c00f 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2080,11 +2080,39 @@ static bool vga_interface_available(VGAInterfaceType
> t)
> object_class_by_name(ti->class_names[1]);
> }
>
> -static void select_vgahw(const char *p)
> +static const char *
> +get_default_vga_model(const MachineClass *machine_class)
> +{
> + if (machine_class->default_display) {
> + return machine_class->default_display;
> + } else if (vga_interface_available(VGA_CIRRUS)) {
> + return "cirrus";
> + } else if (vga_interface_available(VGA_STD)) {
> + return "std";
> + }
> +
> + return NULL;
> +}
> +
> +static void select_vgahw(const MachineClass *machine_class, const char *p)
> {
> const char *opts;
> int t;
>
> + if (g_str_equal(p, "help")) {
> + const char *def = get_default_vga_model(machine_class);
> +
> + for (t = 0; t < VGA_TYPE_MAX; t++) {
> + const VGAInterfaceInfo *ti = &vga_interfaces[t];
> +
> + if (vga_interface_available(t) && ti->opt_name) {
> + printf("%-20s %s%s\n", ti->opt_name, ti->name ?: "",
> + g_str_equal(ti->opt_name, def) ? " (default)" : "");
> + }
> + }
> + exit(0);
> + }
> +
> assert(vga_interface_type == VGA_NONE);
> for (t = 0; t < VGA_TYPE_MAX; t++) {
> const VGAInterfaceInfo *ti = &vga_interfaces[t];
> @@ -4437,16 +4465,10 @@ int main(int argc, char **argv, char **envp)
>
> /* If no default VGA is requested, the default is "none". */
> if (default_vga) {
> - if (machine_class->default_display) {
> - vga_model = machine_class->default_display;
> - } else if (vga_interface_available(VGA_CIRRUS)) {
> - vga_model = "cirrus";
> - } else if (vga_interface_available(VGA_STD)) {
> - vga_model = "std";
> - }
> + vga_model = get_default_vga_model(machine_class);
> }
> if (vga_model) {
> - select_vgahw(vga_model);
> + select_vgahw(machine_class, vga_model);
> }
>
> if (watchdog) {
>