sdl: switch over to new display registry

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20180301100547.18962-3-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2018-03-01 11:05:36 +01:00
parent db71589fd9
commit 5ee1718f92
4 changed files with 29 additions and 46 deletions

View File

@ -444,25 +444,6 @@ void qemu_display_register(QemuDisplay *ui);
void qemu_display_early_init(DisplayOptions *opts);
void qemu_display_init(DisplayState *ds, DisplayOptions *opts);
/* sdl.c */
#ifdef CONFIG_SDL
void sdl_display_early_init(DisplayOptions *opts);
void sdl_display_init(DisplayState *ds, DisplayOptions *opts);
#else
static inline void sdl_display_early_init(DisplayOptions *opts)
{
/* This must never be called if CONFIG_SDL is disabled */
error_report("SDL support is disabled");
abort();
}
static inline void sdl_display_init(DisplayState *ds, DisplayOptions *opts)
{
/* This must never be called if CONFIG_SDL is disabled */
error_report("SDL support is disabled");
abort();
}
#endif
/* cocoa.m */
#ifdef CONFIG_COCOA
void cocoa_display_init(DisplayState *ds, DisplayOptions *opts);

View File

@ -901,17 +901,7 @@ static const DisplayChangeListenerOps dcl_ops = {
.dpy_cursor_define = sdl_mouse_define,
};
void sdl_display_early_init(DisplayOptions *opts)
{
if (opts->has_gl && opts->gl) {
fprintf(stderr,
"SDL1 display code has no opengl support.\n"
"Please recompile qemu with SDL2, using\n"
"./configure --enable-sdl --with-sdlabi=2.0\n");
}
}
void sdl_display_init(DisplayState *ds, DisplayOptions *o)
static void sdl1_display_init(DisplayState *ds, DisplayOptions *o)
{
int flags;
uint8_t data = 0;
@ -1023,3 +1013,15 @@ void sdl_display_init(DisplayState *ds, DisplayOptions *o)
atexit(sdl_cleanup);
}
static QemuDisplay qemu_display_sdl1 = {
.type = DISPLAY_TYPE_SDL,
.init = sdl1_display_init,
};
static void register_sdl1(void)
{
qemu_display_register(&qemu_display_sdl1);
}
type_init(register_sdl1);

View File

@ -751,7 +751,7 @@ static const DisplayChangeListenerOps dcl_gl_ops = {
};
#endif
void sdl_display_early_init(DisplayOptions *o)
static void sdl2_display_early_init(DisplayOptions *o)
{
assert(o->type == DISPLAY_TYPE_SDL);
if (o->has_gl && o->gl) {
@ -761,7 +761,7 @@ void sdl_display_early_init(DisplayOptions *o)
}
}
void sdl_display_init(DisplayState *ds, DisplayOptions *o)
static void sdl2_display_init(DisplayState *ds, DisplayOptions *o)
{
int flags;
uint8_t data = 0;
@ -861,3 +861,16 @@ void sdl_display_init(DisplayState *ds, DisplayOptions *o)
atexit(sdl_cleanup);
}
static QemuDisplay qemu_display_sdl2 = {
.type = DISPLAY_TYPE_SDL,
.early_init = sdl2_display_early_init,
.init = sdl2_display_init,
};
static void register_sdl1(void)
{
qemu_display_register(&qemu_display_sdl2);
}
type_init(register_sdl1);

15
vl.c
View File

@ -2092,7 +2092,6 @@ static void parse_display(const char *p)
const char *opts;
if (strstart(p, "sdl", &opts)) {
#ifdef CONFIG_SDL
dpy.type = DISPLAY_TYPE_SDL;
while (*opts) {
const char *nextopt;
@ -2153,10 +2152,6 @@ static void parse_display(const char *p)
}
opts = nextopt;
}
#else
error_report("SDL support is disabled");
exit(1);
#endif
} else if (strstart(p, "vnc", &opts)) {
if (*opts == '=') {
vnc_parse(opts + 1, &error_fatal);
@ -4340,12 +4335,7 @@ int main(int argc, char **argv, char **envp)
"ignoring option");
}
if (dpy.type == DISPLAY_TYPE_SDL) {
sdl_display_early_init(&dpy);
} else {
qemu_display_early_init(&dpy);
}
qemu_display_early_init(&dpy);
qemu_console_early_init();
if (dpy.has_gl && dpy.gl && display_opengl == 0) {
@ -4677,9 +4667,6 @@ int main(int argc, char **argv, char **envp)
case DISPLAY_TYPE_CURSES:
curses_display_init(ds, &dpy);
break;
case DISPLAY_TYPE_SDL:
sdl_display_init(ds, &dpy);
break;
case DISPLAY_TYPE_COCOA:
cocoa_display_init(ds, &dpy);
break;