CPPFLAGS="${CPPFLAGS_save}"
fi
-dnl
-dnl Check for the Xinerama extension
-dnl
if test "${enable_xvideo}" != "no" &&
(test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" ||
test "${enable_xvideo}" = "yes"); then
+dnl
+dnl Check for the Xinerama extension
+dnl
ac_cv_have_xinerama="no"
CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
fi
CFLAGS="${CFLAGS_save}"
CPPFLAGS="${CPPFLAGS_save}"
+
+dnl
+dnl Check for XF86VidMode extension
+dnl
+ ac_cv_have_xf86vidmode="no"
+ CPPFLAGS="${CPPFLAGS_save} ${X_CFLAGS}"
+ CFLAGS="${CFLAGS_save} ${X_LIBS} ${X_PRE_LIBS} -lX11 -lXext"
+ AC_CHECK_HEADERS(X11/extensions/xf86vmode.h,[
+ AC_CHECK_LIB(Xxf86vm_pic, XF86VidModeGetViewPort,[
+ VLC_ADD_LDFLAGS([xvideo],[-lXxf86vm_pic])
+ VLC_ADD_LDFLAGS([x11],[-lXxf86vm_pic])
+ VLC_ADD_LDFLAGS([glx],[-lXxf86vm_pic])
+ ac_cv_have_xf86vidmode="yes"
+ ],[
+ AC_CHECK_LIB(Xxf86vm, XF86VidModeGetViewPort,[
+ VLC_ADD_LDFLAGS([xvideo],[-lXxf86vm])
+ VLC_ADD_LDFLAGS([x11],[-lXxf86vm])
+ VLC_ADD_LDFLAGS([glx],[-lXxf86vm])
+ ac_cv_have_xf86vidmode="yes"
+ ])
+ ])
+ ],[true],
+[#ifdef HAVE_X11_XLIB_H
+# include <X11/Xlib.h>
+#endif]
+ )
+ AS_IF([test "${ac_cv_have_xf86vidmode}" = "yes"],
+ [AC_DEFINE(HAVE_XF86VIDMODE, 1, [Define this if you have libXxf86vm installed])
+ ])
+ CFLAGS="${CFLAGS_save}"
+ CPPFLAGS="${CPPFLAGS_save}"
+
fi
dnl
/*****************************************************************************
* xcommon.c: Functions common to the X11 and XVideo plugins
*****************************************************************************
- * Copyright (C) 1998-2001 the VideoLAN team
+ * Copyright (C) 1998-2006 the VideoLAN team
* $Id$
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
# include <X11/extensions/Xinerama.h>
#endif
+#ifdef HAVE_X11_EXTENSIONS_XF86VMODE_H
+# include <X11/extensions/xf86vmode.h>
+#endif
+
#include "xcommon.h"
/*****************************************************************************
{
/* The window wasn't necessarily created at the requested size */
p_vout->p_sys->p_win->i_x = p_vout->p_sys->p_win->i_y = 0;
- p_vout->p_sys->p_win->i_width =
- DisplayWidth( p_vout->p_sys->p_display,
- p_vout->p_sys->i_screen );
- p_vout->p_sys->p_win->i_height =
- DisplayHeight( p_vout->p_sys->p_display,
- p_vout->p_sys->i_screen );
+
+#ifdef HAVE_XF86VIDMODE
+ XF86VidModeModeLine mode;
+ int i_dummy;
+
+ if( XF86VidModeGetModeLine( p_vout->p_sys->p_display,
+ p_vout->p_sys->i_screen, &i_dummy,
+ &mode ) )
+ {
+ p_vout->p_sys->p_win->i_width = mode.hdisplay;
+ p_vout->p_sys->p_win->i_height = mode.vdisplay;
+
+ /* move cursor to the middle of the window to prevent
+ * unwanted display move if the display is smaller than the
+ * full desktop */
+ XWarpPointer( p_vout->p_sys->p_display, None,
+ p_vout->p_sys->p_win->base_window, 0, 0, 0, 0,
+ mode.hdisplay / 2 , mode.vdisplay / 2 );
+ /* force desktop view to upper left corner */
+ XF86VidModeSetViewPort( p_vout->p_sys->p_display,
+ p_vout->p_sys->i_screen, 0, 0 );
+ }
+ else
+#endif
+ {
+ p_vout->p_sys->p_win->i_width =
+ DisplayWidth( p_vout->p_sys->p_display,
+ p_vout->p_sys->i_screen );
+ p_vout->p_sys->p_win->i_height =
+ DisplayHeight( p_vout->p_sys->p_display,
+ p_vout->p_sys->i_screen );
+ }
+
}
XMoveResizeWindow( p_vout->p_sys->p_display,