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

View File

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

View File

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

View File

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