diff --git a/configure b/configure index 066f740a54..7e490cac50 100755 --- a/configure +++ b/configure @@ -1190,15 +1190,23 @@ if ("${SDL_CONFIG}" --version) >/dev/null 2>&1 ; then #undef main /* We don't want SDL to override our main() */ int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } EOF - restore_flags if test $? = 0; then _sdlversion=`"${SDL_CONFIG}" --version | sed 's/[^0-9]//g'` - if test "$_sdlversion" -lt 130 ; then + if test "$_sdlversion" -lt 121 ; then sdl_too_old=yes else sdl=yes + check_cc < +int main(void){ + const SDL_VideoInfo *vi = SDL_GetVideoInfo(); + int w = vi->current_w; + return 0; +} +EOF fi fi + restore_flags fi ########################################## @@ -1534,6 +1542,9 @@ if test "$sdl" = "yes" ; then echo "CONFIG_SDL=yes" >> config.mak echo "SDL_LIBS=`"${SDL_CONFIG}" --libs`" >> config.mak echo "SDL_CFLAGS=`"${SDL_CONFIG}" --cflags`" >> config.mak + if test "$sdl_video_size" = "yes"; then + echo "#define HAVE_SDL_VIDEO_SIZE 1" >> $TMPH + fi fi if test "$texi2html" = "yes"; then echo "BUILD_DOC=yes" >> config.mak diff --git a/ffplay.c b/ffplay.c index 030a760ae4..720ce324c9 100644 --- a/ffplay.c +++ b/ffplay.c @@ -2096,19 +2096,25 @@ void toggle_full_screen(void) { int w, h, flags; is_full_screen = !is_full_screen; - flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL; - if (is_full_screen) { - w = fs_screen_width; - h = fs_screen_height; - flags |= SDL_FULLSCREEN; + if (!fs_screen_width) { + /* use default SDL method */ + SDL_WM_ToggleFullScreen(screen); } else { - w = screen_width; - h = screen_height; - flags |= SDL_RESIZABLE; + /* use the recorded resolution */ + flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL; + if (is_full_screen) { + w = fs_screen_width; + h = fs_screen_height; + flags |= SDL_FULLSCREEN; + } else { + w = screen_width; + h = screen_height; + flags |= SDL_RESIZABLE; + } + screen = SDL_SetVideoMode(w, h, 0, flags); + cur_stream->width = w; + cur_stream->height = h; } - screen = SDL_SetVideoMode(w, h, 0, flags); - cur_stream->width = w; - cur_stream->height = h; } void toggle_pause(void) @@ -2426,10 +2432,11 @@ int main(int argc, char **argv) } if (!display_disable) { +#ifdef HAVE_SDL_VIDEO_SIZE const SDL_VideoInfo *vi = SDL_GetVideoInfo(); fs_screen_width = vi->current_w; fs_screen_height = vi->current_h; - +#endif flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL; if (is_full_screen && fs_screen_width) { w = fs_screen_width;