https://github.com/mixxxdj/mixxx/pull/14574 From 1f78615d0079c8949cd68dea5a28bdf69aed2bd3 Mon Sep 17 00:00:00 2001 From: Nicolas PARLANT Date: Mon, 31 Mar 2025 13:33:13 +0000 Subject: [PATCH] X11-less - Use FindWrapOpenGL Use FindWrapOpenGL.cmake. It allows X11-less system. Set link_target to OpenGL::OpenGL, GLVND-basede. If not found, use OpenGL:GL. Furthermore, adding a NOQX11 definition so that the screensaver that requires Xlib is now optional. Signed-off-by: Nicolas PARLANT --- CMakeLists.txt | 11 +++++++++-- src/util/screensaver.cpp | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7a48247f97..91b83a5cd35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3187,8 +3187,8 @@ else() set(CMAKE_FIND_FRAMEWORK FIRST) endif() set(OpenGL_GL_PREFERENCE "GLVND") - find_package(OpenGL REQUIRED) if(EMSCRIPTEN) + find_package(OpenGL REQUIRED) # Emscripten's FindOpenGL.cmake does not create OpenGL::GL target_link_libraries(mixxx-lib PRIVATE ${OPENGL_gl_LIBRARY}) target_compile_definitions(mixxx-lib PUBLIC QT_OPENGL_ES_2) @@ -3200,7 +3200,12 @@ else() PUBLIC -sMIN_WEBGL_VERSION=2 -sMAX_WEBGL_VERSION=2 -sFULL_ES2=1 ) else() - target_link_libraries(mixxx-lib PRIVATE OpenGL::GL) + find_package(WrapOpenGL REQUIRED) + if(OpenGL::OpenGL) + target_link_libraries(mixxx-lib PRIVATE OpenGL::OpenGL) + else() + target_link_libraries(mixxx-lib PRIVATE OpenGL::GL) + endif() endif() if(UNIX AND QGLES2) target_compile_definitions(mixxx-lib PUBLIC QT_OPENGL_ES_2) @@ -3841,6 +3846,8 @@ elseif(UNIX AND NOT APPLE AND NOT EMSCRIPTEN) if(${X11_FOUND}) target_include_directories(mixxx-lib SYSTEM PUBLIC "${X11_INCLUDE_DIR}") target_link_libraries(mixxx-lib PRIVATE "${X11_LIBRARIES}") + else() + target_compile_definitions(mixxx-lib PUBLIC QNOX11) endif() find_package(Qt${QT_VERSION_MAJOR} COMPONENTS DBus REQUIRED) target_link_libraries(mixxx-lib PUBLIC Qt${QT_VERSION_MAJOR}::DBus) diff --git a/src/util/screensaver.cpp b/src/util/screensaver.cpp index 9eae4a1b4cd..68f70518429 100644 --- a/src/util/screensaver.cpp +++ b/src/util/screensaver.cpp @@ -36,7 +36,8 @@ With the help of the following source codes: # include #endif -#if defined(__LINUX__) || (defined(HAVE_XSCREENSAVER_SUSPEND) && HAVE_XSCREENSAVER_SUSPEND) +#if (defined(__LINUX__) && !defined(QNOX11)) || \ + (defined(HAVE_XSCREENSAVER_SUSPEND) && HAVE_XSCREENSAVER_SUSPEND) # define None XNone # define Window XWindow # include @@ -146,7 +147,7 @@ void ScreenSaverHelper::uninhibitInternal() s_enabled = false; } -#elif defined(Q_OS_LINUX) +#elif (defined(Q_OS_LINUX) && !defined(QNOX11)) const char *SCREENSAVERS[][4] = { // org.freedesktop.ScreenSaver is the standard. should work for gnome and kde too, // but I add their specific names too