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_early_init(DisplayOptions *opts);
void qemu_display_init(DisplayState *ds, 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 */ /* cocoa.m */
#ifdef CONFIG_COCOA #ifdef CONFIG_COCOA
void cocoa_display_init(DisplayState *ds, DisplayOptions *opts); 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, .dpy_cursor_define = sdl_mouse_define,
}; };
void sdl_display_early_init(DisplayOptions *opts) static void sdl1_display_init(DisplayState *ds, DisplayOptions *o)
{
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)
{ {
int flags; int flags;
uint8_t data = 0; uint8_t data = 0;
@ -1023,3 +1013,15 @@ void sdl_display_init(DisplayState *ds, DisplayOptions *o)
atexit(sdl_cleanup); 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 #endif
void sdl_display_early_init(DisplayOptions *o) static void sdl2_display_early_init(DisplayOptions *o)
{ {
assert(o->type == DISPLAY_TYPE_SDL); assert(o->type == DISPLAY_TYPE_SDL);
if (o->has_gl && o->gl) { 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; int flags;
uint8_t data = 0; uint8_t data = 0;
@ -861,3 +861,16 @@ void sdl_display_init(DisplayState *ds, DisplayOptions *o)
atexit(sdl_cleanup); 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; const char *opts;
if (strstart(p, "sdl", &opts)) { if (strstart(p, "sdl", &opts)) {
#ifdef CONFIG_SDL
dpy.type = DISPLAY_TYPE_SDL; dpy.type = DISPLAY_TYPE_SDL;
while (*opts) { while (*opts) {
const char *nextopt; const char *nextopt;
@ -2153,10 +2152,6 @@ static void parse_display(const char *p)
} }
opts = nextopt; opts = nextopt;
} }
#else
error_report("SDL support is disabled");
exit(1);
#endif
} else if (strstart(p, "vnc", &opts)) { } else if (strstart(p, "vnc", &opts)) {
if (*opts == '=') { if (*opts == '=') {
vnc_parse(opts + 1, &error_fatal); vnc_parse(opts + 1, &error_fatal);
@ -4340,12 +4335,7 @@ int main(int argc, char **argv, char **envp)
"ignoring option"); "ignoring option");
} }
if (dpy.type == DISPLAY_TYPE_SDL) { qemu_display_early_init(&dpy);
sdl_display_early_init(&dpy);
} else {
qemu_display_early_init(&dpy);
}
qemu_console_early_init(); qemu_console_early_init();
if (dpy.has_gl && dpy.gl && display_opengl == 0) { 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: case DISPLAY_TYPE_CURSES:
curses_display_init(ds, &dpy); curses_display_init(ds, &dpy);
break; break;
case DISPLAY_TYPE_SDL:
sdl_display_init(ds, &dpy);
break;
case DISPLAY_TYPE_COCOA: case DISPLAY_TYPE_COCOA:
cocoa_display_init(ds, &dpy); cocoa_display_init(ds, &dpy);
break; break;