From 29f3b38a916720740716153076dfbae7b0dc6b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Wed, 14 Jun 2006 21:02:55 +0000 Subject: [PATCH] check for SDL_VideoInfo.current_[wh] availability in configure, and fall back on SDL_WM_ToggleFullScreen() if not available Originally committed as revision 5477 to svn://svn.ffmpeg.org/ffmpeg/trunk --- configure | 15 +++++++++++++-- ffplay.c | 31 +++++++++++++++++++------------ 2 files changed, 32 insertions(+), 14 deletions(-) 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;