mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-09-25 12:54:50 +08:00
+1
-1
@@ -423,7 +423,7 @@ set_option(SDL_RPATH "Use an rpath when linking SDL" ${UNIX_SYS})
|
||||
set_option(SDL_CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" ${UNIX_SYS})
|
||||
set_option(SDL_X11 "Use X11 video driver" ${UNIX_SYS})
|
||||
dep_option(SDL_X11_SHARED "Dynamically load X11 support" ON "SDL_X11" OFF)
|
||||
set(SDL_X11_OPTIONS Xcursor Xdbe Xinerama XInput Xfixes Xrandr Xscrnsaver XShape Xvm)
|
||||
set(SDL_X11_OPTIONS Xcursor Xdbe XInput Xfixes Xrandr Xscrnsaver XShape)
|
||||
foreach(_SUB ${SDL_X11_OPTIONS})
|
||||
string(TOUPPER "SDL_X11_${_SUB}" _OPT)
|
||||
dep_option(${_OPT} "Enable ${_SUB} support" ON "SDL_X11" OFF)
|
||||
|
||||
+1
-23
@@ -393,7 +393,7 @@ endmacro()
|
||||
# - HAVE_SDL_LOADSO opt
|
||||
macro(CheckX11)
|
||||
if(SDL_X11)
|
||||
foreach(_LIB X11 Xext Xcursor Xinerama Xi Xfixes Xrandr Xrender Xss Xxf86vm)
|
||||
foreach(_LIB X11 Xext Xcursor Xi Xfixes Xrandr Xrender Xss)
|
||||
FindLibraryAndSONAME("${_LIB}")
|
||||
endforeach()
|
||||
|
||||
@@ -415,7 +415,6 @@ macro(CheckX11)
|
||||
endif()
|
||||
|
||||
check_include_file(X11/Xcursor/Xcursor.h HAVE_XCURSOR_H)
|
||||
check_include_file(X11/extensions/Xinerama.h HAVE_XINERAMA_H)
|
||||
check_include_file(X11/extensions/XInput2.h HAVE_XINPUT2_H)
|
||||
check_include_file(X11/extensions/Xrandr.h HAVE_XRANDR_H)
|
||||
check_include_file(X11/extensions/Xfixes.h HAVE_XFIXES_H_)
|
||||
@@ -423,7 +422,6 @@ macro(CheckX11)
|
||||
check_include_file(X11/extensions/scrnsaver.h HAVE_XSS_H)
|
||||
check_include_file(X11/extensions/shape.h HAVE_XSHAPE_H)
|
||||
check_include_files("X11/Xlib.h;X11/extensions/Xdbe.h" HAVE_XDBE_H)
|
||||
check_include_files("X11/Xlib.h;X11/extensions/xf86vmode.h" HAVE_XF86VM_H)
|
||||
check_include_files("X11/Xlib.h;X11/Xproto.h;X11/extensions/Xext.h" HAVE_XEXT_H)
|
||||
|
||||
if(X11_LIB)
|
||||
@@ -504,16 +502,6 @@ macro(CheckX11)
|
||||
set(SDL_VIDEO_DRIVER_X11_XDBE 1)
|
||||
endif()
|
||||
|
||||
if(SDL_X11_XINERAMA AND HAVE_XINERAMA_H)
|
||||
set(HAVE_X11_XINERAMA TRUE)
|
||||
if(HAVE_X11_SHARED AND XINERAMA_LIB)
|
||||
set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "\"${XINERAMA_LIB_SONAME}\"")
|
||||
else()
|
||||
list(APPEND EXTRA_LIBS ${XINERAMA_LIB})
|
||||
endif()
|
||||
set(SDL_VIDEO_DRIVER_X11_XINERAMA 1)
|
||||
endif()
|
||||
|
||||
if(SDL_X11_XINPUT AND HAVE_XINPUT2_H)
|
||||
set(HAVE_X11_XINPUT TRUE)
|
||||
if(HAVE_X11_SHARED AND XI_LIB)
|
||||
@@ -584,16 +572,6 @@ macro(CheckX11)
|
||||
set(HAVE_X11_XSHAPE TRUE)
|
||||
endif()
|
||||
|
||||
if(SDL_X11_XVM AND HAVE_XF86VM_H)
|
||||
if(HAVE_X11_SHARED AND XXF86VM_LIB)
|
||||
set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XXF86VM_LIB_SONAME}\"")
|
||||
else()
|
||||
list(APPEND EXTRA_LIBS ${XXF86VM_LIB})
|
||||
endif()
|
||||
set(SDL_VIDEO_DRIVER_X11_XVIDMODE 1)
|
||||
set(HAVE_X11_XVM TRUE)
|
||||
endif()
|
||||
|
||||
set(CMAKE_REQUIRED_LIBRARIES)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -878,13 +878,11 @@ with_x
|
||||
enable_x11_shared
|
||||
enable_video_x11_xcursor
|
||||
enable_video_x11_xdbe
|
||||
enable_video_x11_xinerama
|
||||
enable_video_x11_xinput
|
||||
enable_video_x11_xfixes
|
||||
enable_video_x11_xrandr
|
||||
enable_video_x11_scrnsaver
|
||||
enable_video_x11_xshape
|
||||
enable_video_x11_vm
|
||||
enable_video_vivante
|
||||
enable_video_cocoa
|
||||
enable_video_metal
|
||||
@@ -1668,8 +1666,6 @@ Optional Features:
|
||||
--enable-video-x11-xcursor
|
||||
enable X11 Xcursor support [default=yes]
|
||||
--enable-video-x11-xdbe enable X11 Xdbe support [default=yes]
|
||||
--enable-video-x11-xinerama
|
||||
enable X11 Xinerama support [default=yes]
|
||||
--enable-video-x11-xinput
|
||||
enable X11 XInput extension for manymouse, tablets,
|
||||
etc [default=yes]
|
||||
@@ -1682,7 +1678,6 @@ Optional Features:
|
||||
enable X11 screensaver extension [default=yes]
|
||||
--enable-video-x11-xshape
|
||||
enable X11 XShape support [default=yes]
|
||||
--enable-video-x11-vm use X11 VM extension for fullscreen [default=yes]
|
||||
--enable-video-vivante use Vivante EGL video driver [default=yes]
|
||||
--enable-video-cocoa use Cocoa video driver [default=yes]
|
||||
--enable-video-metal include Metal support [default=yes]
|
||||
@@ -21741,37 +21736,31 @@ fi
|
||||
x11_lib='/opt/X11/lib/libX11.6.dylib'
|
||||
x11ext_lib='/opt/X11/lib/libXext.6.dylib'
|
||||
xcursor_lib='/opt/X11/lib/libXcursor.1.dylib'
|
||||
xinerama_lib='/opt/X11/lib/libXinerama.1.dylib'
|
||||
xinput_lib='/opt/X11/lib/libXi.6.dylib'
|
||||
xfixes_lib='/opt/X11/lib/libXfixes.3.dylib'
|
||||
xrandr_lib='/opt/X11/lib/libXrandr.2.dylib'
|
||||
xrender_lib='/opt/X11/lib/libXrender.1.dylib'
|
||||
xss_lib='/opt/X11/lib/libXss.1.dylib'
|
||||
xvidmode_lib='/opt/X11/lib/libXxf86vm.1.dylib'
|
||||
;;
|
||||
*-*-openbsd*)
|
||||
x11_lib='libX11.so'
|
||||
x11ext_lib='libXext.so'
|
||||
xcursor_lib='libXcursor.so'
|
||||
xinerama_lib='libXinerama.so'
|
||||
xinput_lib='libXi.so'
|
||||
xfixes_lib='libXfixes.so'
|
||||
xrandr_lib='libXrandr.so'
|
||||
xrender_lib='libXrender.so'
|
||||
xss_lib='libXss.so'
|
||||
xvidmode_lib='libXxf86vm.so'
|
||||
;;
|
||||
*)
|
||||
x11_lib=`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
x11ext_lib=`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xcursor_lib=`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xinerama_lib=`find_lib "libXinerama.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xinput_lib=`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xfixes_lib=`find_lib "libXfixes.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xrandr_lib=`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xrender_lib=`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xss_lib=`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
xvidmode_lib=`find_lib "libXxf86vm.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -22023,88 +22012,6 @@ $as_echo "#define SDL_VIDEO_DRIVER_X11_XDBE 1" >>confdefs.h
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xdbe"
|
||||
fi
|
||||
fi
|
||||
# Check whether --enable-video-x11-xinerama was given.
|
||||
if test "${enable_video_x11_xinerama+set}" = set; then :
|
||||
enableval=$enable_video_x11_xinerama;
|
||||
else
|
||||
enable_video_x11_xinerama=yes
|
||||
fi
|
||||
|
||||
if test x$enable_video_x11_xinerama = xyes; then
|
||||
definitely_enable_video_x11_xinerama=no
|
||||
ac_fn_c_check_header_compile "$LINENO" "X11/extensions/Xinerama.h" "ac_cv_header_X11_extensions_Xinerama_h" "#include <X11/Xlib.h>
|
||||
|
||||
"
|
||||
if test "x$ac_cv_header_X11_extensions_Xinerama_h" = xyes; then :
|
||||
have_xinerama_h_hdr=yes
|
||||
else
|
||||
have_xinerama_h_hdr=no
|
||||
fi
|
||||
|
||||
|
||||
if test x$have_xinerama_h_hdr = xyes; then
|
||||
if test x$enable_x11_shared = xyes && test x$xinerama_lib != x ; then
|
||||
echo "-- dynamic libXinerama -> $xinerama_lib"
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "$xinerama_lib"
|
||||
_ACEOF
|
||||
|
||||
definitely_enable_video_x11_xinerama=yes
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XineramaQueryExtension in -lXinerama" >&5
|
||||
$as_echo_n "checking for XineramaQueryExtension in -lXinerama... " >&6; }
|
||||
if ${ac_cv_lib_Xinerama_XineramaQueryExtension+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lXinerama $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char XineramaQueryExtension ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return XineramaQueryExtension ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_Xinerama_XineramaQueryExtension=yes
|
||||
else
|
||||
ac_cv_lib_Xinerama_XineramaQueryExtension=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xinerama_XineramaQueryExtension" >&5
|
||||
$as_echo "$ac_cv_lib_Xinerama_XineramaQueryExtension" >&6; }
|
||||
if test "x$ac_cv_lib_Xinerama_XineramaQueryExtension" = xyes; then :
|
||||
have_xinerama_lib=yes
|
||||
fi
|
||||
|
||||
if test x$have_xinerama_lib = xyes ; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXinerama"
|
||||
definitely_enable_video_x11_xinerama=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$definitely_enable_video_x11_xinerama = xyes; then
|
||||
|
||||
$as_echo "#define SDL_VIDEO_DRIVER_X11_XINERAMA 1" >>confdefs.h
|
||||
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xinerama"
|
||||
fi
|
||||
# Check whether --enable-video-x11-xinput was given.
|
||||
if test "${enable_video_x11_xinput+set}" = set; then :
|
||||
enableval=$enable_video_x11_xinput;
|
||||
@@ -22517,88 +22424,6 @@ $as_echo "#define SDL_VIDEO_DRIVER_X11_XSHAPE 1" >>confdefs.h
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xshape"
|
||||
fi
|
||||
fi
|
||||
# Check whether --enable-video-x11-vm was given.
|
||||
if test "${enable_video_x11_vm+set}" = set; then :
|
||||
enableval=$enable_video_x11_vm;
|
||||
else
|
||||
enable_video_x11_vm=yes
|
||||
fi
|
||||
|
||||
if test x$enable_video_x11_vm = xyes; then
|
||||
definitely_enable_video_x11_vm=no
|
||||
ac_fn_c_check_header_compile "$LINENO" "X11/extensions/xf86vmode.h" "ac_cv_header_X11_extensions_xf86vmode_h" "#include <X11/Xlib.h>
|
||||
|
||||
"
|
||||
if test "x$ac_cv_header_X11_extensions_xf86vmode_h" = xyes; then :
|
||||
have_vm_h_hdr=yes
|
||||
else
|
||||
have_vm_h_hdr=no
|
||||
fi
|
||||
|
||||
|
||||
if test x$have_vm_h_hdr = xyes; then
|
||||
if test x$enable_x11_shared = xyes && test x$xvidmode_lib != x ; then
|
||||
echo "-- dynamic libXxf86vm -> $xvidmode_lib"
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "$xvidmode_lib"
|
||||
_ACEOF
|
||||
|
||||
definitely_enable_video_x11_vm=yes
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XF86VidModeQueryVersion in -lXxf86vm" >&5
|
||||
$as_echo_n "checking for XF86VidModeQueryVersion in -lXxf86vm... " >&6; }
|
||||
if ${ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lXxf86vm $LIBS"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char XF86VidModeQueryVersion ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return XF86VidModeQueryVersion ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion=yes
|
||||
else
|
||||
ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&5
|
||||
$as_echo "$ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" >&6; }
|
||||
if test "x$ac_cv_lib_Xxf86vm_XF86VidModeQueryVersion" = xyes; then :
|
||||
have_vm_lib=yes
|
||||
fi
|
||||
|
||||
if test x$have_vm_lib = xyes ; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXxf86vm"
|
||||
definitely_enable_video_x11_vm=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$definitely_enable_video_x11_vm = xyes; then
|
||||
|
||||
$as_echo "#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1" >>confdefs.h
|
||||
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xvidmode"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$have_x != xyes; then
|
||||
|
||||
@@ -1768,37 +1768,31 @@ CheckX11()
|
||||
x11_lib='/opt/X11/lib/libX11.6.dylib'
|
||||
x11ext_lib='/opt/X11/lib/libXext.6.dylib'
|
||||
xcursor_lib='/opt/X11/lib/libXcursor.1.dylib'
|
||||
xinerama_lib='/opt/X11/lib/libXinerama.1.dylib'
|
||||
xinput_lib='/opt/X11/lib/libXi.6.dylib'
|
||||
xfixes_lib='/opt/X11/lib/libXfixes.3.dylib'
|
||||
xrandr_lib='/opt/X11/lib/libXrandr.2.dylib'
|
||||
xrender_lib='/opt/X11/lib/libXrender.1.dylib'
|
||||
xss_lib='/opt/X11/lib/libXss.1.dylib'
|
||||
xvidmode_lib='/opt/X11/lib/libXxf86vm.1.dylib'
|
||||
;;
|
||||
*-*-openbsd*)
|
||||
x11_lib='libX11.so'
|
||||
x11ext_lib='libXext.so'
|
||||
xcursor_lib='libXcursor.so'
|
||||
xinerama_lib='libXinerama.so'
|
||||
xinput_lib='libXi.so'
|
||||
xfixes_lib='libXfixes.so'
|
||||
xrandr_lib='libXrandr.so'
|
||||
xrender_lib='libXrender.so'
|
||||
xss_lib='libXss.so'
|
||||
xvidmode_lib='libXxf86vm.so'
|
||||
;;
|
||||
*)
|
||||
x11_lib=[`find_lib "libX11.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
x11ext_lib=[`find_lib "libXext.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xcursor_lib=[`find_lib "libXcursor.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xinerama_lib=[`find_lib "libXinerama.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xinput_lib=[`find_lib "libXi.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xfixes_lib=[`find_lib "libXfixes.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xrandr_lib=[`find_lib "libXrandr.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xrender_lib=[`find_lib "libXrender.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xss_lib=[`find_lib "libXss.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
xvidmode_lib=[`find_lib "libXxf86vm.so.*" "$X_LIBS -L/usr/X11/$base_libdir -L/usr/X11R6/$base_libdir" | sed 's/.*\/\(.*\)/\1/; q'`]
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1910,34 +1904,6 @@ XFreeEventData(display, cookie);
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xdbe"
|
||||
fi
|
||||
fi
|
||||
AC_ARG_ENABLE(video-x11-xinerama,
|
||||
[AS_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [default=yes]])],
|
||||
, enable_video_x11_xinerama=yes)
|
||||
if test x$enable_video_x11_xinerama = xyes; then
|
||||
definitely_enable_video_x11_xinerama=no
|
||||
AC_CHECK_HEADER(X11/extensions/Xinerama.h,
|
||||
have_xinerama_h_hdr=yes,
|
||||
have_xinerama_h_hdr=no,
|
||||
[#include <X11/Xlib.h>
|
||||
])
|
||||
if test x$have_xinerama_h_hdr = xyes; then
|
||||
if test x$enable_x11_shared = xyes && test x$xinerama_lib != x ; then
|
||||
echo "-- dynamic libXinerama -> $xinerama_lib"
|
||||
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA, "$xinerama_lib", [ ])
|
||||
definitely_enable_video_x11_xinerama=yes
|
||||
else
|
||||
AC_CHECK_LIB(Xinerama, XineramaQueryExtension, have_xinerama_lib=yes)
|
||||
if test x$have_xinerama_lib = xyes ; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXinerama"
|
||||
definitely_enable_video_x11_xinerama=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$definitely_enable_video_x11_xinerama = xyes; then
|
||||
AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA, 1, [ ])
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xinerama"
|
||||
fi
|
||||
AC_ARG_ENABLE(video-x11-xinput,
|
||||
[AS_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [default=yes]])],
|
||||
, enable_video_x11_xinput=yes)
|
||||
@@ -2087,34 +2053,6 @@ dnl XRRScreenResources is only present in Xrandr >= 1.2, we use that
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xshape"
|
||||
fi
|
||||
fi
|
||||
AC_ARG_ENABLE(video-x11-vm,
|
||||
[AS_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [default=yes]])],
|
||||
, enable_video_x11_vm=yes)
|
||||
if test x$enable_video_x11_vm = xyes; then
|
||||
definitely_enable_video_x11_vm=no
|
||||
AC_CHECK_HEADER(X11/extensions/xf86vmode.h,
|
||||
have_vm_h_hdr=yes,
|
||||
have_vm_h_hdr=no,
|
||||
[#include <X11/Xlib.h>
|
||||
])
|
||||
if test x$have_vm_h_hdr = xyes; then
|
||||
if test x$enable_x11_shared = xyes && test x$xvidmode_lib != x ; then
|
||||
echo "-- dynamic libXxf86vm -> $xvidmode_lib"
|
||||
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE, "$xvidmode_lib", [ ])
|
||||
definitely_enable_video_x11_vm=yes
|
||||
else
|
||||
AC_CHECK_LIB(Xxf86vm, XF86VidModeQueryVersion, have_vm_lib=yes)
|
||||
if test x$have_vm_lib = xyes ; then
|
||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXxf86vm"
|
||||
definitely_enable_video_x11_vm=yes
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$definitely_enable_video_x11_vm = xyes; then
|
||||
AC_DEFINE(SDL_VIDEO_DRIVER_X11_XVIDMODE, 1, [ ])
|
||||
SUMMARY_video_x11="${SUMMARY_video_x11} xvidmode"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test x$have_x != xyes; then
|
||||
|
||||
@@ -3,8 +3,8 @@ Linux
|
||||
|
||||
By default SDL will only link against glibc, the rest of the features will be
|
||||
enabled dynamically at runtime depending on the available features on the target
|
||||
system. So, for example if you built SDL with Xinerama support and the target
|
||||
system does not have the Xinerama libraries installed, it will be disabled
|
||||
system. So, for example if you built SDL with XRandR support and the target
|
||||
system does not have the XRandR libraries installed, it will be disabled
|
||||
at runtime, and you won't get a missing library error, at least with the
|
||||
default configuration parameters.
|
||||
|
||||
@@ -17,7 +17,7 @@ Ubuntu 20.04, all available features enabled:
|
||||
sudo apt-get install build-essential git make cmake autoconf automake \
|
||||
libtool pkg-config libasound2-dev libpulse-dev libaudio-dev libjack-dev \
|
||||
libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxfixes-dev libxi-dev \
|
||||
libxinerama-dev libxxf86vm-dev libxss-dev libgl1-mesa-dev libdbus-1-dev \
|
||||
libxss-dev libgl1-mesa-dev libdbus-1-dev \
|
||||
libudev-dev libgles2-mesa-dev libegl1-mesa-dev libibus-1.0-dev \
|
||||
fcitx-libs-dev libsamplerate0-dev libsndio-dev libwayland-dev \
|
||||
libxkbcommon-dev libdrm-dev libgbm-dev
|
||||
@@ -27,12 +27,11 @@ Fedora 35, all available features enabled:
|
||||
sudo yum install gcc git-core make cmake autoconf automake libtool \
|
||||
alsa-lib-devel pulseaudio-libs-devel nas-devel pipewire-devel \
|
||||
libX11-devel libXext-devel libXrandr-devel libXcursor-devel libXfixes-devel \
|
||||
libXi-devel libXinerama-devel libXxf86vm-devel libXScrnSaver-devel \
|
||||
dbus-devel ibus-devel fcitx-devel systemd-devel mesa-libGL-devel \
|
||||
libxkbcommon-devel mesa-libGLES-devel mesa-libEGL-devel vulkan-devel \
|
||||
wayland-devel wayland-protocols-devel libdrm-devel mesa-libgbm-devel \
|
||||
libusb-devel pipewire-jack-audio-connection-kit-devel libdecor-devel \
|
||||
libsamplerate-devel
|
||||
libXi-devel libXScrnSaver-devel dbus-devel ibus-devel fcitx-devel \
|
||||
systemd-devel mesa-libGL-devel libxkbcommon-devel mesa-libGLES-devel
|
||||
mesa-libEGL-devel vulkan-devel wayland-devel wayland-protocols-devel
|
||||
libdrm-devel mesa-libgbm-devel libusb-devel libdecor-devel \
|
||||
libsamplerate-devel pipewire-jack-audio-connection-kit-devel \
|
||||
|
||||
NOTES:
|
||||
- This includes all the audio targets except arts and esd, because Ubuntu
|
||||
|
||||
@@ -63,7 +63,7 @@ Now, before chrooting into the ARM sysroot, you'll need to apply a workaround,
|
||||
edit $SYSROOT/etc/ld.so.preload and comment out all lines in it.
|
||||
|
||||
sudo chroot $SYSROOT
|
||||
apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev libxss-dev
|
||||
apt-get install libudev-dev libasound2-dev libdbus-1-dev libraspberrypi0 libraspberrypi-bin libraspberrypi-dev libx11-dev libxext-dev libxrandr-dev libxcursor-dev libxi-dev libxss-dev
|
||||
exit
|
||||
sudo umount $SYSROOT/dev
|
||||
sudo umount $SYSROOT/proc
|
||||
|
||||
@@ -421,22 +421,18 @@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 @SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES @SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR @SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS @SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE @SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XCURSOR @SDL_VIDEO_DRIVER_X11_XCURSOR@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XDBE @SDL_VIDEO_DRIVER_X11_XDBE@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINERAMA @SDL_VIDEO_DRIVER_X11_XINERAMA@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2 @SDL_VIDEO_DRIVER_X11_XINPUT2@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH @SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XFIXES @SDL_VIDEO_DRIVER_X11_XFIXES@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XRANDR @SDL_VIDEO_DRIVER_X11_XRANDR@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XSCRNSAVER @SDL_VIDEO_DRIVER_X11_XSCRNSAVER@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XSHAPE @SDL_VIDEO_DRIVER_X11_XSHAPE@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_XVIDMODE @SDL_VIDEO_DRIVER_X11_XVIDMODE@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS @SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM @SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM@
|
||||
#cmakedefine SDL_VIDEO_DRIVER_VITA @SDL_VIDEO_DRIVER_VITA@
|
||||
|
||||
@@ -388,22 +388,18 @@
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
|
||||
#undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
|
||||
#undef SDL_VIDEO_DRIVER_X11_XCURSOR
|
||||
#undef SDL_VIDEO_DRIVER_X11_XDBE
|
||||
#undef SDL_VIDEO_DRIVER_X11_XINERAMA
|
||||
#undef SDL_VIDEO_DRIVER_X11_XINPUT2
|
||||
#undef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH
|
||||
#undef SDL_VIDEO_DRIVER_X11_XFIXES
|
||||
#undef SDL_VIDEO_DRIVER_X11_XRANDR
|
||||
#undef SDL_VIDEO_DRIVER_X11_XSCRNSAVER
|
||||
#undef SDL_VIDEO_DRIVER_X11_XSHAPE
|
||||
#undef SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
#undef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
|
||||
#undef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM
|
||||
#undef SDL_VIDEO_DRIVER_NACL
|
||||
|
||||
@@ -186,17 +186,13 @@
|
||||
#undef SDL_VIDEO_DRIVER_X11
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/opt/X11/lib/libXinerama.1.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/opt/X11/lib/libXxf86vm.1.dylib"
|
||||
#define SDL_VIDEO_DRIVER_X11_XDBE 1
|
||||
#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
|
||||
#define SDL_VIDEO_DRIVER_X11_XRANDR 1
|
||||
#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
|
||||
#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
|
||||
#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
|
||||
#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
|
||||
|
||||
#ifdef MAC_OS_X_VERSION_10_8
|
||||
|
||||
+9
-13
@@ -1590,13 +1590,11 @@ extern "C" {
|
||||
#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
|
||||
|
||||
/**
|
||||
* \brief A variable controlling whether the X11 Xinerama extension should be used.
|
||||
* \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used.
|
||||
*
|
||||
* This variable can be set to the following values:
|
||||
* "0" - Disable Xinerama
|
||||
* "1" - Enable Xinerama
|
||||
*
|
||||
* By default SDL will use Xinerama if it is available.
|
||||
* Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11.
|
||||
* Now SDL never uses Xinerama, and does not check for this hint at all.
|
||||
* The preprocessor define is left here for source compatibility.
|
||||
*/
|
||||
#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
|
||||
|
||||
@@ -1607,18 +1605,16 @@ extern "C" {
|
||||
* "0" - Disable XRandR
|
||||
* "1" - Enable XRandR
|
||||
*
|
||||
* By default SDL will not use XRandR because of window manager issues.
|
||||
* By default SDL will use XRandR.
|
||||
*/
|
||||
#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
|
||||
|
||||
/**
|
||||
* \brief A variable controlling whether the X11 VidMode extension should be used.
|
||||
* \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used.
|
||||
*
|
||||
* This variable can be set to the following values:
|
||||
* "0" - Disable XVidMode
|
||||
* "1" - Enable XVidMode
|
||||
*
|
||||
* By default SDL will use XVidMode if it is available.
|
||||
* Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11.
|
||||
* Now SDL never uses XVidMode, and does not check for this hint at all.
|
||||
* The preprocessor define is left here for source compatibility.
|
||||
*/
|
||||
#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
|
||||
|
||||
|
||||
@@ -47,9 +47,6 @@ typedef struct
|
||||
#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR NULL
|
||||
#endif
|
||||
#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA NULL
|
||||
#endif
|
||||
#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 NULL
|
||||
#endif
|
||||
@@ -62,20 +59,15 @@ typedef struct
|
||||
#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS NULL
|
||||
#endif
|
||||
#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE
|
||||
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE NULL
|
||||
#endif
|
||||
|
||||
static x11dynlib x11libs[] = {
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XFIXES},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS},
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE}
|
||||
{NULL, SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS}
|
||||
};
|
||||
|
||||
static void *
|
||||
|
||||
@@ -52,9 +52,6 @@
|
||||
#if SDL_VIDEO_DRIVER_X11_XDBE
|
||||
#include <X11/extensions/Xdbe.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XINERAMA
|
||||
#include <X11/extensions/Xinerama.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XINPUT2
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#endif
|
||||
@@ -70,9 +67,6 @@
|
||||
#if SDL_VIDEO_DRIVER_X11_XSHAPE
|
||||
#include <X11/extensions/shape.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
#include <X11/extensions/xf86vmode.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
|
||||
+12
-473
File diff suppressed because it is too large
Load Diff
@@ -35,35 +35,20 @@ typedef struct
|
||||
float hdpi;
|
||||
float vdpi;
|
||||
|
||||
int use_xinerama;
|
||||
int use_xrandr;
|
||||
int use_vidmode;
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XINERAMA
|
||||
XineramaScreenInfo xinerama_info;
|
||||
int xinerama_screen;
|
||||
#endif
|
||||
SDL_bool use_xrandr;
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XRANDR
|
||||
RROutput xrandr_output;
|
||||
#endif
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
int vidmode_screen;
|
||||
#endif
|
||||
|
||||
} SDL_DisplayData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
#if SDL_VIDEO_DRIVER_X11_XRANDR
|
||||
RRMode xrandr_mode;
|
||||
#else
|
||||
int unused; /* just so struct isn't empty. */
|
||||
#endif
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
XF86VidModeModeInfo vm_mode;
|
||||
#endif
|
||||
|
||||
} SDL_DisplayModeData;
|
||||
|
||||
extern int X11_InitModes(_THIS);
|
||||
|
||||
@@ -260,15 +260,6 @@ SDL_X11_SYM(void,XdbeFreeVisualInfo,(XdbeScreenVisualInfo *visual_info),(visual_
|
||||
SDL_X11_SYM(XdbeBackBufferAttributes*,XdbeGetBackBufferAttributes,(Display *dpy,XdbeBackBuffer buffer),(dpy,buffer),return)
|
||||
#endif
|
||||
|
||||
/* Xinerama support */
|
||||
#if SDL_VIDEO_DRIVER_X11_XINERAMA
|
||||
SDL_X11_MODULE(XINERAMA)
|
||||
SDL_X11_SYM(Bool,XineramaIsActive,(Display *a),(a),return)
|
||||
SDL_X11_SYM(Bool,XineramaQueryExtension,(Display *a,int *b,int *c),(a,b,c),return)
|
||||
SDL_X11_SYM(Status,XineramaQueryVersion,(Display *a,int *b,int *c),(a,b,c),return)
|
||||
SDL_X11_SYM(XineramaScreenInfo*,XineramaQueryScreens,(Display *a, int *b),(a,b),return)
|
||||
#endif
|
||||
|
||||
/* XInput2 support for multiple mice, tablets, etc. */
|
||||
#if SDL_VIDEO_DRIVER_X11_XINPUT2
|
||||
SDL_X11_MODULE(XINPUT2)
|
||||
@@ -321,17 +312,6 @@ SDL_X11_MODULE(XSHAPE)
|
||||
SDL_X11_SYM(void,XShapeCombineMask,(Display *dpy,Window dest,int dest_kind,int x_off,int y_off,Pixmap src,int op),(dpy,dest,dest_kind,x_off,y_off,src,op),)
|
||||
#endif
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
SDL_X11_MODULE(XVIDMODE)
|
||||
SDL_X11_SYM(Bool,XF86VidModeGetAllModeLines,(Display *a,int b,int *c,XF86VidModeModeInfo ***d),(a,b,c,d),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeGetModeLine,(Display *a,int b,int *c,XF86VidModeModeLine *d),(a,b,c,d),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeGetViewPort,(Display *a,int b,int *c,int *d),(a,b,c,d),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeQueryExtension,(Display *a,int *b,int *c),(a,b,c),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeQueryVersion,(Display *a,int *b,int *c),(a,b,c),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeSwitchToMode,(Display *a,int b,XF86VidModeModeInfo *c),(a,b,c),return)
|
||||
SDL_X11_SYM(Bool,XF86VidModeLockModeSwitch,(Display *a,int b,int c),(a,b,c),return)
|
||||
#endif
|
||||
|
||||
#undef SDL_X11_MODULE
|
||||
#undef SDL_X11_SYM
|
||||
|
||||
|
||||
@@ -37,9 +37,6 @@
|
||||
#if SDL_VIDEO_DRIVER_X11_XDBE
|
||||
#include <X11/extensions/Xdbe.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XINERAMA
|
||||
#include <X11/extensions/Xinerama.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XINPUT2
|
||||
#include <X11/extensions/XInput2.h>
|
||||
#endif
|
||||
@@ -52,9 +49,6 @@
|
||||
#if SDL_VIDEO_DRIVER_X11_XSHAPE
|
||||
#include <X11/extensions/shape.h>
|
||||
#endif
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
#include <X11/extensions/xf86vmode.h>
|
||||
#endif
|
||||
|
||||
#include "../../core/linux/SDL_dbus.h"
|
||||
#include "../../core/linux/SDL_ime.h"
|
||||
|
||||
@@ -72,13 +72,6 @@ X11_XIfEventTimeout(Display *display, XEvent *event_return, Bool (*predicate)(),
|
||||
}
|
||||
*/
|
||||
|
||||
static SDL_bool
|
||||
X11_IsWindowLegacyFullscreen(_THIS, SDL_Window * window)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
return (data->fswindow != 0);
|
||||
}
|
||||
|
||||
static SDL_bool
|
||||
X11_IsWindowMapped(_THIS, SDL_Window * window)
|
||||
{
|
||||
@@ -1433,161 +1426,12 @@ X11_SetWindowFullscreenViaWM(_THIS, SDL_Window * window, SDL_VideoDisplay * _dis
|
||||
X11_XFlush(display);
|
||||
}
|
||||
|
||||
/* This handles fullscreen itself, outside the Window Manager. */
|
||||
static void
|
||||
X11_BeginWindowFullscreenLegacy(_THIS, SDL_Window * window, SDL_VideoDisplay * _display)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
SDL_DisplayData *displaydata = (SDL_DisplayData *) _display->driverdata;
|
||||
Visual *visual = data->visual;
|
||||
Display *display = data->videodata->display;
|
||||
const int screen = displaydata->screen;
|
||||
Window root = RootWindow(display, screen);
|
||||
const int def_vis = (visual == DefaultVisual(display, screen));
|
||||
unsigned long xattrmask = 0;
|
||||
XSetWindowAttributes xattr;
|
||||
XEvent ev;
|
||||
SDL_Rect rect;
|
||||
|
||||
if ( data->fswindow ) {
|
||||
return; /* already fullscreen, I hope. */
|
||||
}
|
||||
|
||||
X11_GetDisplayBounds(_this, _display, &rect);
|
||||
|
||||
SDL_zero(xattr);
|
||||
xattr.override_redirect = True;
|
||||
xattrmask |= CWOverrideRedirect;
|
||||
xattr.background_pixel = def_vis ? BlackPixel(display, screen) : 0;
|
||||
xattrmask |= CWBackPixel;
|
||||
xattr.border_pixel = 0;
|
||||
xattrmask |= CWBorderPixel;
|
||||
xattr.colormap = data->colormap;
|
||||
xattrmask |= CWColormap;
|
||||
|
||||
data->fswindow = X11_XCreateWindow(display, root,
|
||||
rect.x, rect.y, rect.w, rect.h, 0,
|
||||
displaydata->depth, InputOutput,
|
||||
visual, xattrmask, &xattr);
|
||||
|
||||
X11_XSelectInput(display, data->fswindow, StructureNotifyMask);
|
||||
X11_XSetWindowBackground(display, data->fswindow, 0);
|
||||
X11_XInstallColormap(display, data->colormap);
|
||||
X11_XClearWindow(display, data->fswindow);
|
||||
X11_XMapRaised(display, data->fswindow);
|
||||
|
||||
/* Make sure the fswindow is in view by warping mouse to the corner */
|
||||
X11_XUngrabPointer(display, CurrentTime);
|
||||
X11_XWarpPointer(display, None, root, 0, 0, 0, 0, rect.x, rect.y);
|
||||
|
||||
/* Wait to be mapped, filter Unmap event out if it arrives. */
|
||||
X11_XIfEvent(display, &ev, &isMapNotify, (XPointer)&data->fswindow);
|
||||
X11_XCheckIfEvent(display, &ev, &isUnmapNotify, (XPointer)&data->fswindow);
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_XVIDMODE
|
||||
if ( displaydata->use_vidmode ) {
|
||||
X11_XF86VidModeLockModeSwitch(display, screen, True);
|
||||
}
|
||||
#endif
|
||||
|
||||
SetWindowBordered(display, displaydata->screen, data->xwindow, SDL_FALSE);
|
||||
|
||||
/* Center actual window within our cover-the-screen window. */
|
||||
X11_XReparentWindow(display, data->xwindow, data->fswindow,
|
||||
(rect.w - window->w) / 2, (rect.h - window->h) / 2);
|
||||
|
||||
/* Move the mouse to the upper left to make sure it's on-screen */
|
||||
X11_XWarpPointer(display, None, root, 0, 0, 0, 0, rect.x, rect.y);
|
||||
|
||||
/* Center mouse in the fullscreen window. */
|
||||
rect.x += (rect.w / 2);
|
||||
rect.y += (rect.h / 2);
|
||||
X11_XWarpPointer(display, None, root, 0, 0, 0, 0, rect.x, rect.y);
|
||||
|
||||
/* Wait to be mapped, filter Unmap event out if it arrives. */
|
||||
X11_XIfEvent(display, &ev, &isMapNotify, (XPointer)&data->xwindow);
|
||||
X11_XCheckIfEvent(display, &ev, &isUnmapNotify, (XPointer)&data->xwindow);
|
||||
|
||||
SDL_UpdateWindowGrab(window);
|
||||
}
|
||||
|
||||
static void
|
||||
X11_EndWindowFullscreenLegacy(_THIS, SDL_Window * window, SDL_VideoDisplay * _display)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
SDL_DisplayData *displaydata = (SDL_DisplayData *) _display->driverdata;
|
||||
Display *display = data->videodata->display;
|
||||
const int screen = displaydata->screen;
|
||||
Window root = RootWindow(display, screen);
|
||||
Window fswindow = data->fswindow;
|
||||
XEvent ev;
|
||||
|
||||
if (!data->fswindow) {
|
||||
return; /* already not fullscreen, I hope. */
|
||||
}
|
||||
|
||||
data->fswindow = None;
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_VIDMODE
|
||||
if ( displaydata->use_vidmode ) {
|
||||
X11_XF86VidModeLockModeSwitch(display, screen, False);
|
||||
}
|
||||
#endif
|
||||
|
||||
SDL_UpdateWindowGrab(window);
|
||||
|
||||
X11_XReparentWindow(display, data->xwindow, root, window->x, window->y);
|
||||
|
||||
/* flush these events so they don't confuse normal event handling */
|
||||
X11_XSync(display, False);
|
||||
X11_XCheckIfEvent(display, &ev, &isMapNotify, (XPointer)&data->xwindow);
|
||||
X11_XCheckIfEvent(display, &ev, &isUnmapNotify, (XPointer)&data->xwindow);
|
||||
|
||||
SetWindowBordered(display, screen, data->xwindow,
|
||||
(window->flags & SDL_WINDOW_BORDERLESS) == 0);
|
||||
|
||||
X11_XWithdrawWindow(display, fswindow, screen);
|
||||
|
||||
/* Wait to be unmapped. */
|
||||
X11_XIfEvent(display, &ev, &isUnmapNotify, (XPointer)&fswindow);
|
||||
X11_XDestroyWindow(display, fswindow);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
X11_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * _display, SDL_bool fullscreen)
|
||||
{
|
||||
/* !!! FIXME: SDL_Hint? */
|
||||
SDL_bool legacy = SDL_FALSE;
|
||||
const char *env = SDL_getenv("SDL_VIDEO_X11_LEGACY_FULLSCREEN");
|
||||
if (env) {
|
||||
legacy = SDL_atoi(env);
|
||||
} else {
|
||||
SDL_VideoData *videodata = (SDL_VideoData *) _this->driverdata;
|
||||
SDL_DisplayData *displaydata = (SDL_DisplayData *) _display->driverdata;
|
||||
if ( displaydata->use_vidmode ) {
|
||||
legacy = SDL_TRUE; /* the new stuff only works with XRandR. */
|
||||
} else if ( !videodata->net_wm ) {
|
||||
legacy = SDL_TRUE; /* The window manager doesn't support it */
|
||||
} else {
|
||||
/* !!! FIXME: look at the window manager name, and blacklist certain ones? */
|
||||
/* http://stackoverflow.com/questions/758648/find-the-name-of-the-x-window-manager */
|
||||
legacy = SDL_FALSE; /* try the new way. */
|
||||
}
|
||||
}
|
||||
|
||||
if (legacy) {
|
||||
if (fullscreen) {
|
||||
X11_BeginWindowFullscreenLegacy(_this, window, _display);
|
||||
} else {
|
||||
X11_EndWindowFullscreenLegacy(_this, window, _display);
|
||||
}
|
||||
} else {
|
||||
X11_SetWindowFullscreenViaWM(_this, window, _display, fullscreen);
|
||||
}
|
||||
X11_SetWindowFullscreenViaWM(_this, window, _display, fullscreen);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
X11_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp)
|
||||
{
|
||||
@@ -1699,7 +1543,7 @@ X11_GetWindowICCProfile(_THIS, SDL_Window * window, size_t * size)
|
||||
unsigned long real_nitems;
|
||||
SDL_x11Prop atomProp;
|
||||
|
||||
X11_XGetWindowAttributes(display, X11_IsWindowLegacyFullscreen(_this, window) ? data->fswindow : data->xwindow, &attributes);
|
||||
X11_XGetWindowAttributes(display, data->xwindow, &attributes);
|
||||
if (X11_XScreenNumberOfScreen(attributes.screen) > 0) {
|
||||
SDL_snprintf(icc_atom_string, sizeof("_ICC_PROFILE_") + 12, "%s%d", "_ICC_PROFILE_", X11_XScreenNumberOfScreen(attributes.screen));
|
||||
} else {
|
||||
@@ -1740,7 +1584,6 @@ X11_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
|
||||
{
|
||||
SDL_WindowData *data = (SDL_WindowData *) window->driverdata;
|
||||
Display *display;
|
||||
SDL_bool oldstyle_fullscreen;
|
||||
|
||||
if (data == NULL) {
|
||||
return;
|
||||
@@ -1748,13 +1591,7 @@ X11_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
|
||||
|
||||
display = data->videodata->display;
|
||||
|
||||
/* ICCCM2.0-compliant window managers can handle fullscreen windows
|
||||
If we're using XVidMode to change resolution we need to confine
|
||||
the cursor so we don't pan around the virtual desktop.
|
||||
*/
|
||||
oldstyle_fullscreen = X11_IsWindowLegacyFullscreen(_this, window);
|
||||
|
||||
if (oldstyle_fullscreen || grabbed) {
|
||||
if (grabbed) {
|
||||
/* If the window is unmapped, XGrab calls return GrabNotViewable,
|
||||
so when we get a MapNotify later, we'll try to update the grab as
|
||||
appropriate. */
|
||||
@@ -1788,11 +1625,6 @@ X11_SetWindowMouseGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
|
||||
|
||||
/* Raise the window if we grab the mouse */
|
||||
X11_XRaiseWindow(display, data->xwindow);
|
||||
|
||||
/* Now grab the keyboard on old-style fullscreen */
|
||||
if (oldstyle_fullscreen) {
|
||||
X11_SetWindowKeyboardGrab(_this, window, SDL_TRUE);
|
||||
}
|
||||
} else {
|
||||
X11_XUngrabPointer(display, CurrentTime);
|
||||
|
||||
|
||||
@@ -44,7 +44,6 @@ typedef struct
|
||||
{
|
||||
SDL_Window *window;
|
||||
Window xwindow;
|
||||
Window fswindow; /* used if we can't have the WM handle fullscreen. */
|
||||
Visual *visual;
|
||||
Colormap colormap;
|
||||
#ifndef NO_SHARED_MEMORY
|
||||
|
||||
@@ -32,9 +32,7 @@ const char* _HintsEnum[] =
|
||||
SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS,
|
||||
SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT,
|
||||
SDL_HINT_VIDEO_WIN_D3DCOMPILER,
|
||||
SDL_HINT_VIDEO_X11_XINERAMA,
|
||||
SDL_HINT_VIDEO_X11_XRANDR,
|
||||
SDL_HINT_VIDEO_X11_XVIDMODE,
|
||||
SDL_HINT_XINPUT_ENABLED,
|
||||
};
|
||||
const char* _HintsVerbose[] =
|
||||
@@ -60,9 +58,7 @@ const char* _HintsVerbose[] =
|
||||
"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
|
||||
"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
|
||||
"SDL_VIDEO_WIN_D3DCOMPILER",
|
||||
"SDL_VIDEO_X11_XINERAMA",
|
||||
"SDL_VIDEO_X11_XRANDR",
|
||||
"SDL_VIDEO_X11_XVIDMODE",
|
||||
"SDL_XINPUT_ENABLED"
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user