Merge pull request #896 from heuripedes/master

SDL fixes
This commit is contained in:
Twinaphex 2014-08-23 11:32:30 +02:00
commit 43c5384141
4 changed files with 39 additions and 27 deletions

View File

@ -35,6 +35,7 @@ enum
VIDEO_GL = 0,
VIDEO_XVIDEO,
VIDEO_SDL,
VIDEO_SDL2,
VIDEO_EXT,
VIDEO_WII,
VIDEO_XENON360,
@ -56,6 +57,7 @@ enum
AUDIO_SL,
AUDIO_JACK,
AUDIO_SDL,
AUDIO_SDL2,
AUDIO_XAUDIO,
AUDIO_PULSE,
AUDIO_EXT,
@ -73,6 +75,7 @@ enum
INPUT_ANDROID,
INPUT_SDL,
INPUT_SDL2,
INPUT_X,
INPUT_WAYLAND,
INPUT_DINPUT,
@ -127,6 +130,8 @@ enum
#define VIDEO_DEFAULT_DRIVER VIDEO_XVIDEO
#elif defined(HAVE_SDL)
#define VIDEO_DEFAULT_DRIVER VIDEO_SDL
#elif defined(HAVE_SDL2)
#define VIDEO_DEFAULT_DRIVER VIDEO_SDL2
#elif defined(HAVE_DYLIB) && !defined(ANDROID)
#define VIDEO_DEFAULT_DRIVER VIDEO_EXT
#else
@ -163,6 +168,8 @@ enum
#define AUDIO_DEFAULT_DRIVER AUDIO_RWEBAUDIO
#elif defined(HAVE_SDL)
#define AUDIO_DEFAULT_DRIVER AUDIO_SDL
#elif defined(HAVE_SDL2)
#define AUDIO_DEFAULT_DRIVER AUDIO_SDL2
#elif defined(HAVE_XAUDIO)
#define AUDIO_DEFAULT_DRIVER AUDIO_XAUDIO
#elif defined(HAVE_RSOUND)
@ -211,6 +218,8 @@ enum
#define INPUT_DEFAULT_DRIVER INPUT_QNX
#elif defined(HAVE_SDL)
#define INPUT_DEFAULT_DRIVER INPUT_SDL
#elif defined(HAVE_SDL2)
#define INPUT_DEFAULT_DRIVER INPUT_SDL2
#else
#define INPUT_DEFAULT_DRIVER INPUT_NULL
#endif

View File

@ -89,10 +89,13 @@ static void sdl_ctx_destroy(void *data)
if (g_win)
SDL_DestroyWindow(g_win);
g_ctx = NULL;
#else
SDL_FreeSurface(g_win);
g_win = NULL;
if (g_win)
SDL_FreeSurface(g_win);
#endif
g_win = NULL;
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}
@ -263,18 +266,23 @@ static void sdl_ctx_check_window(void *data, bool *quit, bool *resize,unsigned *
(void)data;
SDL_Event event;
SDL_PumpEvents();
#ifdef HAVE_SDL2
SDL_PumpEvents();
while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_QUIT, SDL_WINDOWEVENT) > 0)
#else
while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_QUITMASK|SDL_VIDEORESIZEMASK) > 0)
#endif
{
switch (event.type)
{
case SDL_QUIT:
#ifdef HAVE_SDL2
case SDL_APP_TERMINATING:
#endif
*quit = true;
break;
#ifdef HAVE_SDL2
case SDL_WINDOWEVENT:
if (event.window.event == SDL_WINDOWEVENT_RESIZED)
{
@ -282,26 +290,17 @@ static void sdl_ctx_check_window(void *data, bool *quit, bool *resize,unsigned *
g_new_width = event.window.data1;
g_new_height = event.window.data2;
}
break;
default:
break;
}
}
#else
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
*quit = true;
case SDL_VIDEORESIZE:
g_resized = true;
g_new_width = event.resize.w;
g_new_height = event.resize.h;
#endif
break;
default:
break;
}
}
#endif
if (g_resized)
{

View File

@ -299,16 +299,14 @@ error:
static void check_window(sdl_video_t *vid)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_QUIT:
vid->quitting = true;
break;
default:
break;
SDL_PumpEvents();
while (SDL_PeepEvents(&event, 1, SDL_GETEVENT, SDL_QUITMASK))
{
if (event.type == SDL_QUIT)
{
vid->quitting = true;
break;
}
}
}

View File

@ -55,6 +55,8 @@ const char *config_get_default_audio(void)
return "opensl";
case AUDIO_SDL:
return "sdl";
case AUDIO_SDL2:
return "sdl2";
case AUDIO_DSOUND:
return "dsound";
case AUDIO_XAUDIO:
@ -114,6 +116,8 @@ const char *config_get_default_video(void)
return "xvideo";
case VIDEO_SDL:
return "sdl";
case VIDEO_SDL2:
return "sdl2";
case VIDEO_EXT:
return "ext";
case VIDEO_VG:
@ -141,6 +145,8 @@ const char *config_get_default_input(void)
return "psp";
case INPUT_SDL:
return "sdl";
case INPUT_SDL2:
return "sdl2";
case INPUT_DINPUT:
return "dinput";
case INPUT_X: