* Use XRandR 1.2 to set fullscreen resolution for single output Squash of roothorick's PR #497 (also includes Kyzentun's CMake changes from PR #716) * Cherry-pick json c++1x stuff (b9e3d7174e) * Cherry-pick c++11 support from 5bba5c0038 and 9f8b045309 * rework Linux (X11) fullscreen, improve display-related Graphics Options Implement option to select between monitors for exclusive fullscreen mode on X11 (using XRandR 1.2), or use a fullscreen borderless window. Reimplement resolution/refresh rate/display mode-related option rows using Lua, update choices dynamically so only known-good groupings of resolution/refresh rate/aspect ratio can be selected. Minimally update Windows/MacOS LowLevelWindow implementations to support changes made for Linux side. Fullscreen Borderless Window/multi monitor support from X11 not implemented for those in this commit. * allow forcibly disabling xinerama use on Linux When libXinerama is available, SM tries to use it to find the proper monitor indexes to use to set _NET_WM_FULLSCREEN_MONITORS (on borderless fullscreen). xfwm4 seems to assume that monitors are numbered in increasing order from left to right (rather than using the Xinerama-assigned numbers), so _NET_WM_FULLSCREEN_MONITORS misbehaves on Xfce. This commit bypasses use of libXinerama, and instead forces SM to induce fullscreen on the desired monitor in the backup, hacky way: remove all window hints, move window to desired monitor, then add _NET_WM_STATE_FULLSCREEN hint. This works on mutter and Xfce. * Remove multiple warnings on redundant define. This used to be hard-coded due to pthread related items, but now it's dynamically determined. * fix _fallback menu behavior for unrecognized aspect ratios * Fix error recreating existing FS texture * Bump deployment target to 10.7 to use libc++ on XCode 8 * Add explicit casts to please clang * Update changelog
83 lines
1.8 KiB
Plaintext
83 lines
1.8 KiB
Plaintext
AC_DEFUN([SM_X11],
|
|
[
|
|
AC_PATH_X
|
|
|
|
XCFLAGS=
|
|
XLIBS=
|
|
|
|
if test "$no_x" != "yes"; then
|
|
if test -n "$x_includes"; then
|
|
XCFLAGS="-I$x_includes"
|
|
fi
|
|
|
|
if test -n "$x_libraries"; then
|
|
XLIBS="-L$x_libraries"
|
|
fi
|
|
|
|
XLIBS+="-lX11"
|
|
|
|
if test -n "$x_includes"; then
|
|
# See if we can compile X applications without using $XCFLAGS.
|
|
AC_MSG_CHECKING(if $XCFLAGS is really necessary)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xos.h>]], [[]])],[XCFLAGS=
|
|
AC_MSG_RESULT(no)],[AC_MSG_RESULT(yes)])
|
|
fi
|
|
|
|
# Check for libXtst.
|
|
AC_CHECK_LIB(Xtst, XTestQueryExtension,
|
|
XLIBS="$XLIBS -lXtst"
|
|
[AC_DEFINE(HAVE_LIBXTST, 1, [libXtst available])],
|
|
,
|
|
[$XLIBS])
|
|
AC_DEFINE(HAVE_X11, 1, [X11 libraries present])
|
|
fi
|
|
|
|
# Check for Xrandr
|
|
AC_CHECK_LIB(Xrandr, XRRQueryVersion,
|
|
have_xrandr=yes,
|
|
have_xrandr=no,
|
|
[$XLIBS])
|
|
AC_CHECK_HEADER(X11/extensions/Xrandr.h, have_xrandr_header=yes, have_xrandr_header=no, [#include <X11/Xlib.h>])
|
|
|
|
if test "$have_xrandr_header" = "no"; then
|
|
have_xrandr=no
|
|
fi
|
|
|
|
# Check for Xxf86vm
|
|
AC_CHECK_LIB(Xxf86vm, XF86VidModeSwitchToMode,
|
|
have_xf86vm=yes,
|
|
have_xf86vm=no,
|
|
[$XLIBS])
|
|
AC_CHECK_HEADER(X11/extensions/xf86vmode.h, have_xf86vm_header=yes, have_xf86vm_header=no, [#include <X11/Xlib.h>])
|
|
|
|
if test "$have_xf86vm_header" = "no"; then
|
|
have_xf86vm=no
|
|
fi
|
|
|
|
no_modeset=yes
|
|
if test "$have_xrandr" = "yes"; then
|
|
XLIBS="$XLIBS -lXrandr"
|
|
AC_DEFINE(HAVE_XRANDR, 1, [Xrandr is available])
|
|
no_modeset=no
|
|
fi
|
|
|
|
if test "$have_xf86vm" = "yes"; then
|
|
XLIBS="$XLIBS -lXxf86vm"
|
|
AC_DEFINE(HAVE_XF86VIDMODE, 1, [XF86VidMode is available])
|
|
no_modeset=no
|
|
fi
|
|
|
|
if test "$no_modeset" = "yes"; then
|
|
if test "$unix" = "yes"; then
|
|
AC_MSG_ERROR("Couldn't find X11 libraries.")
|
|
else
|
|
no_x=yes
|
|
fi
|
|
fi
|
|
|
|
AM_CONDITIONAL(HAVE_X11, test "$no_x" != "yes")
|
|
|
|
AC_SUBST(XCFLAGS)
|
|
AC_SUBST(XLIBS)
|
|
])
|