# HG changeset patch # User reimar # Date 1272189121 0 # Node ID 4f273572e44536ab4e6194e0e46f5d81599135bf # Parent 272b88ce570e10c7e9b3f8c45a216fcd62567ec1 Share SDL initialization code. diff -r 272b88ce570e -r 4f273572e445 libvo/gl_common.c --- a/libvo/gl_common.c Sun Apr 25 09:25:23 2010 +0000 +++ b/libvo/gl_common.c Sun Apr 25 09:52:01 2010 +0000 @@ -1937,7 +1937,7 @@ ctx->swapGlBuffers = swapGlBuffers_sdl; ctx->check_events = sdl_check_events; ctx->fullscreen = vo_sdl_fullscreen; - return 1; + return vo_sdl_init(); #endif default: return 0; @@ -1959,7 +1959,7 @@ #endif #ifdef CONFIG_GL_SDL case GLTYPE_SDL: - SDL_QuitSubSystem(SDL_INIT_VIDEO); + vo_sdl_uninit(); break; #endif } diff -r 272b88ce570e -r 4f273572e445 libvo/sdl_common.c --- a/libvo/sdl_common.c Sun Apr 25 09:25:23 2010 +0000 +++ b/libvo/sdl_common.c Sun Apr 25 09:52:01 2010 +0000 @@ -30,6 +30,30 @@ static int old_h; static int mode_flags; +int vo_sdl_init(void) +{ + if (!SDL_WasInit(SDL_INIT_VIDEO) && + SDL_Init(SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE) < 0) + return 0; + + // Setup Keyrepeats (500/30 are defaults) + SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/); + + // We don't want those in our event queue. + SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE); + SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); + SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE); + SDL_EventState(SDL_USEREVENT, SDL_IGNORE); + + return 1; +} + +void vo_sdl_uninit(void) +{ + if (SDL_WasInit(SDL_INIT_VIDEO)) + SDL_QuitSubSystem(SDL_INIT_VIDEO); +} + void vo_sdl_fullscreen(void) { if (vo_fs) { diff -r 272b88ce570e -r 4f273572e445 libvo/sdl_common.h --- a/libvo/sdl_common.h Sun Apr 25 09:25:23 2010 +0000 +++ b/libvo/sdl_common.h Sun Apr 25 09:52:01 2010 +0000 @@ -28,6 +28,8 @@ #include #endif +int vo_sdl_init(void); +void vo_sdl_uninit(void); void vo_sdl_fullscreen(void); int sdl_set_mode(int bpp, uint32_t flags); int sdl_default_handle_event(SDL_Event *event); diff -r 272b88ce570e -r 4f273572e445 libvo/vo_sdl.c --- a/libvo/vo_sdl.c Sun Apr 25 09:25:23 2010 +0000 +++ b/libvo/vo_sdl.c Sun Apr 25 09:52:01 2010 +0000 @@ -397,9 +397,6 @@ priv->sdlflags |= SDL_DOUBLEBUF; #endif - /* Setup Keyrepeats (500/30 are defaults) */ - SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, 100 /*SDL_DEFAULT_REPEAT_INTERVAL*/); - /* get information about the graphics adapter */ vidInfo = SDL_GetVideoInfo (); @@ -444,16 +441,6 @@ priv->bpp = 16; } - /* We don't want those in our event queue. - * We use SDL_KEYUP cause SDL_KEYDOWN seems to cause problems - * with keys need to be pressed twice, to be recognized. - */ - SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE); - SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE); -// SDL_EventState(SDL_QUIT, SDL_IGNORE); - SDL_EventState(SDL_SYSWMEVENT, SDL_IGNORE); - SDL_EventState(SDL_USEREVENT, SDL_IGNORE); - /* Success! */ return 0; } @@ -1407,8 +1394,7 @@ sdl_close(); /* Cleanup SDL */ - if(SDL_WasInit(SDL_INIT_VIDEO)) - SDL_QuitSubSystem(SDL_INIT_VIDEO); + vo_sdl_uninit(); mp_msg(MSGT_VO,MSGL_DBG3, "SDL: Closed Plugin\n"); @@ -1458,12 +1444,10 @@ priv->bpp = 0; /* initialize the SDL Video system */ - if (!SDL_WasInit(SDL_INIT_VIDEO)) { - if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_NOPARACHUTE)) { + if (!vo_sdl_init()) { mp_msg(MSGT_VO,MSGL_ERR, MSGTR_LIBVO_SDL_InitializationFailed, SDL_GetError()); return -1; - } } SDL_VideoDriverName(priv->driver, 8);