console: move window ID code from baum to sdl

This moves the SDL bits for window ID from the baum driver to SDL, as
well as fixing the build for non-X11.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Message-id: 20161221003806.22412-3-samuel.thibault@ens-lyon.org
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Samuel Thibault 2016-12-21 01:38:05 +01:00 committed by Gerd Hoffmann
parent b3cb21b9b5
commit f29b3431f6
2 changed files with 33 additions and 23 deletions

View File

@ -27,12 +27,10 @@
#include "sysemu/char.h" #include "sysemu/char.h"
#include "qemu/timer.h" #include "qemu/timer.h"
#include "hw/usb.h" #include "hw/usb.h"
#include "ui/console.h"
#include <brlapi.h> #include <brlapi.h>
#include <brlapi_constants.h> #include <brlapi_constants.h>
#include <brlapi_keycodes.h> #include <brlapi_keycodes.h>
#ifdef CONFIG_SDL
#include <SDL_syswm.h>
#endif
#if 0 #if 0
#define DPRINTF(fmt, ...) \ #define DPRINTF(fmt, ...) \
@ -227,12 +225,8 @@ static const uint8_t nabcc_translation[2][256] = {
/* The guest OS has started discussing with us, finish initializing BrlAPI */ /* The guest OS has started discussing with us, finish initializing BrlAPI */
static int baum_deferred_init(BaumDriverState *baum) static int baum_deferred_init(BaumDriverState *baum)
{ {
#if defined(CONFIG_SDL) int tty = BRLAPI_TTY_DEFAULT;
#if SDL_COMPILEDVERSION < SDL_VERSIONNUM(2, 0, 0) QemuConsole *con;
SDL_SysWMinfo info;
#endif
#endif
int tty;
if (baum->deferred_init) { if (baum->deferred_init) {
return 1; return 1;
@ -243,21 +237,12 @@ static int baum_deferred_init(BaumDriverState *baum)
return 0; return 0;
} }
#if defined(CONFIG_SDL) con = qemu_console_lookup_by_index(0);
#if SDL_COMPILEDVERSION < SDL_VERSIONNUM(2, 0, 0) if (con && qemu_console_is_graphic(con)) {
memset(&info, 0, sizeof(info)); tty = qemu_console_get_window_id(con);
SDL_VERSION(&info.version); if (tty == -1)
if (SDL_GetWMInfo(&info)) {
tty = info.info.x11.wmwindow;
} else {
#endif
#endif
tty = BRLAPI_TTY_DEFAULT; tty = BRLAPI_TTY_DEFAULT;
#if defined(CONFIG_SDL)
#if SDL_COMPILEDVERSION < SDL_VERSIONNUM(2, 0, 0)
} }
#endif
#endif
if (brlapi__enterTtyMode(baum->brlapi, tty, NULL) == -1) { if (brlapi__enterTtyMode(baum->brlapi, tty, NULL) == -1) {
brlapi_perror("baum: brlapi__enterTtyMode"); brlapi_perror("baum: brlapi__enterTtyMode");

View File

@ -947,6 +947,7 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
int flags; int flags;
uint8_t data = 0; uint8_t data = 0;
const SDL_VideoInfo *vi; const SDL_VideoInfo *vi;
SDL_SysWMinfo info;
char *filename; char *filename;
#if defined(__APPLE__) #if defined(__APPLE__)
@ -1023,5 +1024,29 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
sdl_cursor_hidden = SDL_CreateCursor(&data, &data, 8, 1, 0, 0); sdl_cursor_hidden = SDL_CreateCursor(&data, &data, 8, 1, 0, 0);
sdl_cursor_normal = SDL_GetCursor(); sdl_cursor_normal = SDL_GetCursor();
memset(&info, 0, sizeof(info));
SDL_VERSION(&info.version);
if (SDL_GetWMInfo(&info)) {
int i;
for (i = 0; ; i++) {
/* All consoles share the same window */
QemuConsole *con = qemu_console_lookup_by_index(i);
if (con) {
#if defined(SDL_VIDEO_DRIVER_X11)
qemu_console_set_window_id(con, info.info.x11.wmwindow);
#elif defined(SDL_VIDEO_DRIVER_NANOX) || \
defined(SDL_VIDEO_DRIVER_WINDIB) || defined(SDL_VIDEO_DRIVER_DDRAW) || \
defined(SDL_VIDEO_DRIVER_GAPI) || \
defined(SDL_VIDEO_DRIVER_RISCOS)
qemu_console_set_window_id(con, (int) (uintptr_t) info.window);
#else
qemu_console_set_window_id(con, info.data);
#endif
} else {
break;
}
}
}
atexit(sdl_cleanup); atexit(sdl_cleanup);
} }