From 3a51d140d8f83ca9194711e95130c97a5cdf19ff Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 8 Apr 2025 10:56:27 +0000 Subject: [PATCH] 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 --- CMakeLists.txt | 2 - build_files/cmake/config/blender_full.cmake | 1 - build_files/cmake/config/blender_lite.cmake | 1 - .../cmake/config/blender_release.cmake | 1 - .../cmake/platform/platform_unix.cmake | 13 -- intern/ghost/CMakeLists.txt | 10 -- .../ghost/intern/GHOST_DisplayManagerX11.cc | 159 +----------------- 7 files changed, 1 insertion(+), 186 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fedd6160f2c..52466305d89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/build_files/cmake/config/blender_full.cmake b/build_files/cmake/config/blender_full.cmake index 244efe913a1..7ebd66221f6 100644 --- a/build_files/cmake/config/blender_full.cmake +++ b/build_files/cmake/config/blender_full.cmake @@ -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) diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake index 76714f0bcf1..f676d39033f 100644 --- a/build_files/cmake/config/blender_lite.cmake +++ b/build_files/cmake/config/blender_lite.cmake @@ -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) diff --git a/build_files/cmake/config/blender_release.cmake b/build_files/cmake/config/blender_release.cmake index ae8f41c1869..259c567fda3 100644 --- a/build_files/cmake/config/blender_release.cmake +++ b/build_files/cmake/config/blender_release.cmake @@ -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 diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index b6d42cf22f1..edc76d94a77 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -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( diff --git a/intern/ghost/CMakeLists.txt b/intern/ghost/CMakeLists.txt index a5a5a2a6c57..dc1db947267 100644 --- a/intern/ghost/CMakeLists.txt +++ b/intern/ghost/CMakeLists.txt @@ -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 diff --git a/intern/ghost/intern/GHOST_DisplayManagerX11.cc b/intern/ghost/intern/GHOST_DisplayManagerX11.cc index 62a8e0d591a..bed2db54de6 100644 --- a/intern/ghost/intern/GHOST_DisplayManagerX11.cc +++ b/intern/ghost/intern/GHOST_DisplayManagerX11.cc @@ -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 `. */ + * SPDX-License-Identifier: GPL-2.0-or-later */ /** \file * \ingroup GHOST @@ -11,11 +9,6 @@ #include -#ifdef WITH_X11_XF86VMODE -# include -# include -#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 }