Cleanup: remove WITH_X11_XF86VMODE since mode setting is no longer used
Setting the display mode was last used for the Game Engine remove the CMake option WITH_X11_XF86VMODE and the associated code. Ref: !137126
This commit is contained in:
@@ -410,7 +410,6 @@ set_and_warn_dependency(WITH_AUDASPACE WITH_SYSTEM_AUDASPACE OFF)
|
||||
|
||||
if(WITH_GHOST_X11)
|
||||
option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
|
||||
option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
|
||||
option(WITH_X11_XFIXES "Enable X11 XWayland cursor warping workaround" ON)
|
||||
endif()
|
||||
|
||||
@@ -2757,7 +2756,6 @@ if(FIRST_RUN)
|
||||
info_cfg_option(WITH_GHOST_WAYLAND)
|
||||
if(WITH_GHOST_X11)
|
||||
info_cfg_option(WITH_GHOST_XDND)
|
||||
info_cfg_option(WITH_X11_XF86VMODE)
|
||||
info_cfg_option(WITH_X11_XFIXES)
|
||||
info_cfg_option(WITH_X11_XINPUT)
|
||||
endif()
|
||||
|
||||
@@ -74,7 +74,6 @@ if(UNIX AND NOT APPLE)
|
||||
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
if(NOT APPLE)
|
||||
set(WITH_XR_OPENXR ON CACHE BOOL "" FORCE)
|
||||
|
||||
@@ -69,7 +69,6 @@ set(WITH_XR_OPENXR OFF CACHE BOOL "" FORCE)
|
||||
if(UNIX AND NOT APPLE)
|
||||
set(WITH_GHOST_XDND OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XINPUT OFF CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XF86VMODE OFF CACHE BOOL "" FORCE)
|
||||
elseif(WIN32)
|
||||
set(WITH_WASAPI OFF CACHE BOOL "" FORCE)
|
||||
elseif(APPLE)
|
||||
|
||||
@@ -79,7 +79,6 @@ if(UNIX AND NOT APPLE)
|
||||
set(WITH_GHOST_XDND ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PULSEAUDIO ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XINPUT ON CACHE BOOL "" FORCE)
|
||||
set(WITH_X11_XF86VMODE ON CACHE BOOL "" FORCE)
|
||||
set(WITH_JACK_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
set(WITH_PULSEAUDIO_DYNLOAD ON CACHE BOOL "" FORCE)
|
||||
# TODO don't disable pipewire on release builds once it has gotten more testing
|
||||
|
||||
@@ -855,19 +855,6 @@ if(WITH_GHOST_X11)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XF86VMODE)
|
||||
# XXX, why doesn't cmake make this available?
|
||||
find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
|
||||
mark_as_advanced(X11_Xxf86vmode_LIB)
|
||||
if(NOT X11_Xxf86vmode_LIB)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"libXxf86vm not found. "
|
||||
"Disable WITH_X11_XF86VMODE if you want to build without"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XFIXES)
|
||||
if(NOT X11_Xfixes_LIB)
|
||||
message(
|
||||
|
||||
@@ -253,16 +253,6 @@ elseif(WITH_GHOST_X11 OR WITH_GHOST_WAYLAND)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XF86VMODE)
|
||||
add_definitions(-DWITH_X11_XF86VMODE)
|
||||
list(APPEND INC_SYS
|
||||
${X11_Xxf86vm_INCLUDE_PATH}
|
||||
)
|
||||
list(APPEND LIB
|
||||
${X11_Xxf86vmode_LIB}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_X11_XFIXES)
|
||||
add_definitions(-DWITH_X11_XFIXES)
|
||||
list(APPEND INC_SYS
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
|
||||
* SPDX-FileCopyrightText: 1997-2001 Id Software, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*
|
||||
* Video mode switching ported from Quake 2 by `Alex Fraser <alex@phatcore.com>`. */
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/** \file
|
||||
* \ingroup GHOST
|
||||
@@ -11,11 +9,6 @@
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#ifdef WITH_X11_XF86VMODE
|
||||
# include <X11/Xlib.h>
|
||||
# include <X11/extensions/xf86vmode.h>
|
||||
#endif
|
||||
|
||||
#include "GHOST_DisplayManagerX11.hh"
|
||||
#include "GHOST_SystemX11.hh"
|
||||
|
||||
@@ -34,46 +27,13 @@ GHOST_TSuccess GHOST_DisplayManagerX11::getNumDisplays(uint8_t &numDisplays) con
|
||||
GHOST_TSuccess GHOST_DisplayManagerX11::getNumDisplaySettings(uint8_t display,
|
||||
int32_t &numSettings) const
|
||||
{
|
||||
#ifdef WITH_X11_XF86VMODE
|
||||
int majorVersion, minorVersion;
|
||||
XF86VidModeModeInfo **vidmodes;
|
||||
Display *dpy = m_system->getXDisplay();
|
||||
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
|
||||
if (dpy == nullptr) {
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
majorVersion = minorVersion = 0;
|
||||
if (!XF86VidModeQueryVersion(dpy, &majorVersion, &minorVersion)) {
|
||||
fprintf(stderr, "Error: XF86VidMode extension missing!\n");
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
if (XF86VidModeGetAllModeLines(dpy, DefaultScreen(dpy), &numSettings, &vidmodes)) {
|
||||
XFree(vidmodes);
|
||||
}
|
||||
|
||||
#else
|
||||
/* We only have one X11 setting at the moment. */
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
numSettings = 1;
|
||||
#endif
|
||||
|
||||
(void)display;
|
||||
return GHOST_kSuccess;
|
||||
}
|
||||
|
||||
/* from SDL2 */
|
||||
#ifdef WITH_X11_XF86VMODE
|
||||
static int calculate_rate(const XF86VidModeModeInfo *info)
|
||||
{
|
||||
return (info->htotal && info->vtotal) ? (1000 * info->dotclock / (info->htotal * info->vtotal)) :
|
||||
0;
|
||||
}
|
||||
#endif
|
||||
|
||||
GHOST_TSuccess GHOST_DisplayManagerX11::getDisplaySetting(uint8_t display,
|
||||
int32_t index,
|
||||
GHOST_DisplaySetting &setting) const
|
||||
@@ -85,35 +45,6 @@ GHOST_TSuccess GHOST_DisplayManagerX11::getDisplaySetting(uint8_t display,
|
||||
}
|
||||
|
||||
(void)display;
|
||||
|
||||
#ifdef WITH_X11_XF86VMODE
|
||||
int majorVersion, minorVersion;
|
||||
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
|
||||
majorVersion = minorVersion = 0;
|
||||
if (XF86VidModeQueryVersion(dpy, &majorVersion, &minorVersion)) {
|
||||
XF86VidModeModeInfo **vidmodes;
|
||||
int numSettings;
|
||||
|
||||
if (XF86VidModeGetAllModeLines(dpy, DefaultScreen(dpy), &numSettings, &vidmodes)) {
|
||||
GHOST_ASSERT(index < numSettings, "Requested setting outside of valid range.\n");
|
||||
|
||||
setting.xPixels = vidmodes[index]->hdisplay;
|
||||
setting.yPixels = vidmodes[index]->vdisplay;
|
||||
setting.bpp = DefaultDepth(dpy, DefaultScreen(dpy));
|
||||
setting.frequency = calculate_rate(vidmodes[index]);
|
||||
XFree(vidmodes);
|
||||
|
||||
return GHOST_kSuccess;
|
||||
}
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "Warning: XF86VidMode extension missing!\n");
|
||||
/* fallback to non xf86vmode below */
|
||||
}
|
||||
#endif /* WITH_X11_XF86VMODE */
|
||||
|
||||
GHOST_ASSERT(display < 1, "Only single display systems are currently supported.\n");
|
||||
GHOST_ASSERT(index < 1, "Requested setting outside of valid range.\n");
|
||||
(void)index;
|
||||
@@ -138,96 +69,8 @@ GHOST_TSuccess GHOST_DisplayManagerX11::getCurrentDisplaySetting(
|
||||
GHOST_TSuccess GHOST_DisplayManagerX11::setCurrentDisplaySetting(
|
||||
uint8_t /*display*/, const GHOST_DisplaySetting &setting)
|
||||
{
|
||||
#ifdef WITH_X11_XF86VMODE
|
||||
/* Mode switching code ported from SDL:
|
||||
* See: src/video/x11/SDL_x11modes.c:set_best_resolution
|
||||
*/
|
||||
int majorVersion, minorVersion;
|
||||
XF86VidModeModeInfo **vidmodes;
|
||||
Display *dpy = m_system->getXDisplay();
|
||||
int scrnum, num_vidmodes;
|
||||
|
||||
if (dpy == nullptr) {
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
scrnum = DefaultScreen(dpy);
|
||||
|
||||
/* Get video mode list */
|
||||
majorVersion = minorVersion = 0;
|
||||
if (!XF86VidModeQueryVersion(dpy, &majorVersion, &minorVersion)) {
|
||||
fprintf(stderr, "Error: XF86VidMode extension missing!\n");
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
# ifndef NDEBUG
|
||||
printf("Using XFree86-VidModeExtension Version %d.%d\n", majorVersion, minorVersion);
|
||||
# endif
|
||||
|
||||
if (XF86VidModeGetAllModeLines(dpy, scrnum, &num_vidmodes, &vidmodes)) {
|
||||
int best_fit = -1;
|
||||
|
||||
for (int i = 0; i < num_vidmodes; i++) {
|
||||
if (vidmodes[i]->hdisplay < setting.xPixels || vidmodes[i]->vdisplay < setting.yPixels) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (best_fit == -1 || (vidmodes[i]->hdisplay < vidmodes[best_fit]->hdisplay) ||
|
||||
(vidmodes[i]->hdisplay == vidmodes[best_fit]->hdisplay &&
|
||||
vidmodes[i]->vdisplay < vidmodes[best_fit]->vdisplay))
|
||||
{
|
||||
best_fit = i;
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((vidmodes[i]->hdisplay == vidmodes[best_fit]->hdisplay) &&
|
||||
(vidmodes[i]->vdisplay == vidmodes[best_fit]->vdisplay))
|
||||
{
|
||||
if (!setting.frequency) {
|
||||
/* Higher is better, right? */
|
||||
if (calculate_rate(vidmodes[i]) > calculate_rate(vidmodes[best_fit])) {
|
||||
best_fit = i;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (abs(calculate_rate(vidmodes[i]) - int(setting.frequency)) <
|
||||
abs(calculate_rate(vidmodes[best_fit]) - int(setting.frequency)))
|
||||
{
|
||||
best_fit = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (best_fit != -1) {
|
||||
# ifndef NDEBUG
|
||||
printf("Switching to video mode %dx%d %dx%d %d\n",
|
||||
vidmodes[best_fit]->hdisplay,
|
||||
vidmodes[best_fit]->vdisplay,
|
||||
vidmodes[best_fit]->htotal,
|
||||
vidmodes[best_fit]->vtotal,
|
||||
calculate_rate(vidmodes[best_fit]));
|
||||
# endif
|
||||
|
||||
/* change to the mode */
|
||||
XF86VidModeSwitchToMode(dpy, scrnum, vidmodes[best_fit]);
|
||||
|
||||
/* Move the viewport to top left */
|
||||
XF86VidModeSetViewPort(dpy, scrnum, 0, 0);
|
||||
}
|
||||
|
||||
XFree(vidmodes);
|
||||
}
|
||||
else {
|
||||
return GHOST_kFailure;
|
||||
}
|
||||
|
||||
XFlush(dpy);
|
||||
return GHOST_kSuccess;
|
||||
|
||||
#else
|
||||
(void)setting;
|
||||
|
||||
/* Just pretend the request was successful. */
|
||||
return GHOST_kSuccess;
|
||||
#endif
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user