diff --git a/src/drivers/sdl/gui.cpp b/src/drivers/sdl/gui.cpp index 4d476446..a911db93 100644 --- a/src/drivers/sdl/gui.cpp +++ b/src/drivers/sdl/gui.cpp @@ -83,6 +83,9 @@ int configHotkey(char* hotkeyString) SDL_Surface *screen; SDL_Event event; KillVideo(); +#if SDL_VERSION_ATLEAST(2, 0, 0) + return 0; // TODO - SDL 2.0 +#else screen = SDL_SetVideoMode(420, 200, 8, 0); //SDL_WM_SetCaption("Press a key to bind...", 0); @@ -103,6 +106,7 @@ int configHotkey(char* hotkeyString) } return 0; +#endif } // This function configures a single button on a gamepad int configGamepadButton(GtkButton* button, gpointer p) @@ -506,7 +510,12 @@ void openHotkeyConfig() g_config->getOption(optionName, &keycode); gtk_tree_store_set(hotkey_store, &iter, COMMAND_COLUMN, optionName, - KEY_COLUMN, SDL_GetKeyName((SDLKey)keycode), + KEY_COLUMN, +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_GetKeyName(keycode), +#else + SDL_GetKeyName((SDLKey)keycode), +#endif -1); gtk_tree_store_append(hotkey_store, &iter, NULL); // acquire child iterator } @@ -591,8 +600,13 @@ void updateGamepadConfig(GtkWidget* w, gpointer p) GtkWidget* mappedKey = buttonMappings[i]; if(GamePadConfig[padNo][i].ButtType[configNo] == BUTTC_KEYBOARD) { +#if SDL_VERSION_ATLEAST(2, 0, 0) + snprintf(strBuf, sizeof(strBuf), "%s", + SDL_GetKeyName(GamePadConfig[padNo][i].ButtonNum[configNo])); +#else snprintf(strBuf, sizeof(strBuf), "%s", SDL_GetKeyName((SDLKey)GamePadConfig[padNo][i].ButtonNum[configNo])); +#endif } else // FIXME: display joystick button/hat/axis names properly strncpy(strBuf, "Joystick", sizeof(strBuf)); @@ -1929,8 +1943,28 @@ void changeState(GtkAction *action, GtkRadioAction *current, gpointer data) { FCEUI_SelectState(gtk_radio_action_get_current_value(current), 0); } - - +#if SDL_VERSION_ATLEAST(2, 0, 0) +// SDL 1.2/2.0 compatibility macros +#define SDLK_SCROLLOCK SDLK_SCROLLLOCK +#define SDLK_PRINT SDLK_PRINTSCREEN +#define SDLK_BREAK 0 +#define SDLK_COMPOSE 0 +#define SDLK_NUMLOCK SDLK_NUMLOCKCLEAR +#define SDLK_KP0 SDLK_KP_0 +#define SDLK_KP1 SDLK_KP_1 +#define SDLK_KP2 SDLK_KP_2 +#define SDLK_KP3 SDLK_KP_3 +#define SDLK_KP4 SDLK_KP_4 +#define SDLK_KP5 SDLK_KP_5 +#define SDLK_KP6 SDLK_KP_6 +#define SDLK_KP7 SDLK_KP_7 +#define SDLK_KP8 SDLK_KP_8 +#define SDLK_KP9 SDLK_KP_9 +#define SDLK_LSUPER SDLK_LGUI +#define SDLK_RSUPER SDLK_RGUI +#define SDLK_LMETA 0 +#define SDLK_RMETA 0 +#endif // Adapted from Gens/GS. Converts a GDK key value into an SDL key value. unsigned short GDKToSDLKeyval(int gdk_key) { @@ -2078,9 +2112,12 @@ unsigned short GDKToSDLKeyval(int gdk_key) gint convertKeypress(GtkWidget *grab, GdkEventKey *event, gpointer user_data) { SDL_Event sdlev; - SDLKey sdlkey; int keystate; - +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_Keycode sdlkey; +#else + SDLKey sdlkey; +#endif switch (event->type) { case GDK_KEY_PRESS: @@ -2101,7 +2138,11 @@ gint convertKeypress(GtkWidget *grab, GdkEventKey *event, gpointer user_data) } // Convert this keypress from GDK to SDL. +#if SDL_VERSION_ATLEAST(2, 0, 0) + sdlkey = GDKToSDLKeyval(event->keyval); +#else sdlkey = (SDLKey)GDKToSDLKeyval(event->keyval); +#endif // Create an SDL event from the keypress. sdlev.key.keysym.sym = sdlkey; diff --git a/src/drivers/sdl/sdl-sound.cpp b/src/drivers/sdl/sdl-sound.cpp index fdf648b3..02794f56 100644 --- a/src/drivers/sdl/sdl-sound.cpp +++ b/src/drivers/sdl/sdl-sound.cpp @@ -88,9 +88,12 @@ InitSound() return 0; } char driverName[8]; +#if SDL_VERSION_ATLEAST(2, 0, 0) + // TODO - SDL 2 +#else SDL_AudioDriverName(driverName, 8); - fprintf(stderr, "Loading SDL sound with %s driver...\n", driverName); +#endif // load configuration variables g_config->getOption("SDL.Sound.Rate", &soundrate); diff --git a/src/drivers/sdl/sdl.cpp b/src/drivers/sdl/sdl.cpp index 0652dd3b..1b0bc48e 100644 --- a/src/drivers/sdl/sdl.cpp +++ b/src/drivers/sdl/sdl.cpp @@ -153,7 +153,12 @@ static void ShowUsage(char *prog) #endif puts(""); printf("Compiled with SDL version %d.%d.%d\n", SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL ); +#if SDL_VERSION_ATLEAST(2, 0, 0) + SDL_version* v; + SDL_GetVersion(v); +#else const SDL_version* v = SDL_Linked_Version(); +#endif printf("Linked with SDL version %d.%d.%d\n", v->major, v->minor, v->patch); #ifdef GTK printf("Compiled with GTK version %d.%d.%d\n", GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION ); @@ -620,6 +625,9 @@ int main(int argc, char *argv[]) int yres, xres; g_config->getOption("SDL.XResolution", &xres); g_config->getOption("SDL.YResolution", &yres); +#if SDL_VERSION_ATLEAST(2, 0, 0) + // TODO _ SDL 2.0 +#else const SDL_VideoInfo* vid_info = SDL_GetVideoInfo(); if(xres == 0) { @@ -650,7 +658,8 @@ int main(int argc, char *argv[]) else { g_config->setOption("SDL.LastYRes", yres); - } + } +#endif int autoResume; g_config->getOption("SDL.AutoResume", &autoResume);