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:
Campbell Barton
2025-04-08 10:56:27 +00:00
parent 3a7dc6ed7f
commit 3a51d140d8
7 changed files with 1 additions and 186 deletions

View File

@@ -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()

View File

@@ -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)

View File

@@ -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)

View File

@@ -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

View File

@@ -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(

View File

@@ -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

View File

@@ -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
}