Commit 898f9d41 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

console: add and use qemu_display_find_default



Using the new display registry instead of #ifdefs in vl.c.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Message-id: 20180301100547.18962-7-kraxel@redhat.com
parent 16ab0a74
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -441,6 +441,7 @@ struct QemuDisplay {
};

void qemu_display_register(QemuDisplay *ui);
bool qemu_display_find_default(DisplayOptions *opts);
void qemu_display_early_init(DisplayOptions *opts);
void qemu_display_init(DisplayState *ds, DisplayOptions *opts);

+19 −0
Original line number Diff line number Diff line
@@ -2188,6 +2188,25 @@ void qemu_display_register(QemuDisplay *ui)
    dpys[ui->type] = ui;
}

bool qemu_display_find_default(DisplayOptions *opts)
{
    static DisplayType prio[] = {
        DISPLAY_TYPE_GTK,
        DISPLAY_TYPE_SDL,
        DISPLAY_TYPE_COCOA
    };
    int i;

    for (i = 0; i < ARRAY_SIZE(prio); i++) {
        if (dpys[prio[i]] == NULL) {
            continue;
        }
        opts->type = prio[i];
        return true;
    }
    return false;
}

void qemu_display_early_init(DisplayOptions *opts)
{
    assert(opts->type < DISPLAY_TYPE__MAX);
+5 −10
Original line number Diff line number Diff line
@@ -4298,18 +4298,13 @@ int main(int argc, char **argv, char **envp)
    }
#endif
    if (dpy.type == DISPLAY_TYPE_DEFAULT && !display_remote) {
#if defined(CONFIG_GTK)
        dpy.type = DISPLAY_TYPE_GTK;
#elif defined(CONFIG_SDL)
        dpy.type = DISPLAY_TYPE_SDL;
#elif defined(CONFIG_COCOA)
        dpy.type = DISPLAY_TYPE_COCOA;
#elif defined(CONFIG_VNC)
        vnc_parse("localhost:0,to=99,id=default", &error_abort);
#else
        if (!qemu_display_find_default(&dpy)) {
            dpy.type = DISPLAY_TYPE_NONE;
#if defined(CONFIG_VNC)
            vnc_parse("localhost:0,to=99,id=default", &error_abort);
#endif
        }
    }
    if (dpy.type == DISPLAY_TYPE_DEFAULT) {
        dpy.type = DISPLAY_TYPE_NONE;
    }