diff options
author | Niclas Rosenvik <nros@netbsd.org> | 2021-03-23 11:26:21 +0000 |
---|---|---|
committer | Niclas Rosenvik <nros@netbsd.org> | 2021-04-11 12:49:04 +0000 |
commit | 7266bd459e7cf8d4f4e3ad67b4ff23dea4fbfd0e (patch) | |
tree | 5421b79c6a005b5e110f58b5d5eb481e258516c0 /src | |
parent | 67c3f3f4ffcadba32ea42522a36b3f6d88fc3482 (diff) |
Fix GLX on non-linux X11 systems
Some parts of the GLX code is only enabled for Linux. This makes
builds on other X11 supported platforms break when GLX is found.
To fix this enable these parts of the code when Qt feature
xcb-glx-plugin is enabled. xcb-glx-plugin has to be made public
in order for QT_CONFIG(xcb_glx_plugin) to work correctly in
these parts of the code.
Change-Id: I6bf78b6a64787ed88c8e2fae40675244c9198c37
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Liang Qi <liang.qi@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/configure.cmake | 2 | ||||
-rw-r--r-- | src/gui/configure.json | 2 | ||||
-rw-r--r-- | src/gui/kernel/qopenglcontext_platform.h | 4 | ||||
-rw-r--r-- | src/gui/kernel/qplatformopenglcontext.h | 2 | ||||
-rw-r--r-- | src/gui/platform/unix/qunixnativeinterface.cpp | 4 |
5 files changed, 7 insertions, 7 deletions
diff --git a/src/gui/configure.cmake b/src/gui/configure.cmake index 449bd838b7..50063ea84d 100644 --- a/src/gui/configure.cmake +++ b/src/gui/configure.cmake @@ -874,7 +874,7 @@ qt_feature("xcb" PRIVATE AUTODETECT NOT APPLE CONDITION QT_FEATURE_thread AND TARGET XCB::XCB AND TEST_xcb_syslibs AND QT_FEATURE_xkbcommon_x11 ) -qt_feature("xcb-glx-plugin" PRIVATE +qt_feature("xcb-glx-plugin" PUBLIC LABEL "GLX Plugin" CONDITION QT_FEATURE_xcb_xlib AND QT_FEATURE_opengl AND NOT QT_FEATURE_opengles2 EMIT_IF QT_FEATURE_xcb diff --git a/src/gui/configure.json b/src/gui/configure.json index d5816c5968..ad53dca292 100644 --- a/src/gui/configure.json +++ b/src/gui/configure.json @@ -1371,7 +1371,7 @@ "label": "GLX Plugin", "emitIf": "features.xcb", "condition": "features.xcb-xlib && features.opengl && !features.opengles2", - "output": [ "privateFeature" ] + "output": [ "publicFeature" ] }, "xcb-glx": { "label": " XCB GLX", diff --git a/src/gui/kernel/qopenglcontext_platform.h b/src/gui/kernel/qopenglcontext_platform.h index c0e1c59fdf..8275416f42 100644 --- a/src/gui/kernel/qopenglcontext_platform.h +++ b/src/gui/kernel/qopenglcontext_platform.h @@ -50,7 +50,7 @@ Q_FORWARD_DECLARE_OBJC_CLASS(NSOpenGLContext); #endif -#if defined(Q_OS_LINUX) +#if QT_CONFIG(xcb_glx_plugin) struct __GLXcontextRec; typedef struct __GLXcontextRec *GLXContext; #endif #if QT_CONFIG(egl) @@ -85,7 +85,7 @@ struct Q_GUI_EXPORT QWGLContext }; #endif -#if defined(Q_OS_LINUX) || defined(Q_CLANG_QDOC) +#if QT_CONFIG(xcb_glx_plugin) || defined(Q_CLANG_QDOC) struct Q_GUI_EXPORT QGLXContext { QT_DECLARE_NATIVE_INTERFACE(QGLXContext) diff --git a/src/gui/kernel/qplatformopenglcontext.h b/src/gui/kernel/qplatformopenglcontext.h index f5d7461394..eefe93111d 100644 --- a/src/gui/kernel/qplatformopenglcontext.h +++ b/src/gui/kernel/qplatformopenglcontext.h @@ -127,7 +127,7 @@ struct Q_GUI_EXPORT QWindowsGLIntegration }; #endif -#if defined(Q_OS_LINUX) +#if QT_CONFIG(xcb_glx_plugin) struct Q_GUI_EXPORT QGLXIntegration { QT_DECLARE_NATIVE_INTERFACE(QGLXIntegration) diff --git a/src/gui/platform/unix/qunixnativeinterface.cpp b/src/gui/platform/unix/qunixnativeinterface.cpp index a182fce182..0ef88b4c91 100644 --- a/src/gui/platform/unix/qunixnativeinterface.cpp +++ b/src/gui/platform/unix/qunixnativeinterface.cpp @@ -55,7 +55,7 @@ using namespace QNativeInterface::Private; #ifndef QT_NO_OPENGL -#if defined(Q_OS_LINUX) +#if QT_CONFIG(xcb_glx_plugin) /*! \class QNativeInterface::QGLXContext @@ -110,7 +110,7 @@ QOpenGLContext *QNativeInterface::QGLXContext::fromNative(GLXContext visualBased return QGuiApplicationPrivate::platformIntegration()->call< &QGLXIntegration::createOpenGLContext>(visualBasedContext, visualInfo, shareContext); } -#endif // defined(Q_OS_LINUX) +#endif // QT_CONFIG(xcb_glx_plugin) #if QT_CONFIG(egl) |