diff options
author | Måns Rullgård <mans@mansr.com> | 2006-06-14 21:02:55 +0000 |
---|---|---|
committer | Måns Rullgård <mans@mansr.com> | 2006-06-14 21:02:55 +0000 |
commit | 29f3b38a916720740716153076dfbae7b0dc6b21 (patch) | |
tree | 40482db871012bfef7085468a4724b1528e12668 | |
parent | 4a387d7d3b23c9e66012a02c0e90322bddab8fb5 (diff) | |
download | ffmpeg-29f3b38a916720740716153076dfbae7b0dc6b21.tar.gz |
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
-rwxr-xr-x | configure | 15 | ||||
-rw-r--r-- | ffplay.c | 31 |
2 files changed, 32 insertions, 14 deletions
@@ -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 <<EOF && sdl_video_size=yes || sdl_video_size=no +#include <SDL.h> +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 @@ -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; |