summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMåns Rullgård <mans@mansr.com>2006-06-14 21:02:55 +0000
committerMåns Rullgård <mans@mansr.com>2006-06-14 21:02:55 +0000
commit29f3b38a916720740716153076dfbae7b0dc6b21 (patch)
tree40482db871012bfef7085468a4724b1528e12668
parent4a387d7d3b23c9e66012a02c0e90322bddab8fb5 (diff)
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-xconfigure15
-rw-r--r--ffplay.c31
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 <<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
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;