summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNiclas Rosenvik <nros@netbsd.org>2021-03-23 11:26:21 +0000
committerNiclas Rosenvik <nros@netbsd.org>2021-04-11 12:49:04 +0000
commit7266bd459e7cf8d4f4e3ad67b4ff23dea4fbfd0e (patch)
tree5421b79c6a005b5e110f58b5d5eb481e258516c0 /src
parent67c3f3f4ffcadba32ea42522a36b3f6d88fc3482 (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.cmake2
-rw-r--r--src/gui/configure.json2
-rw-r--r--src/gui/kernel/qopenglcontext_platform.h4
-rw-r--r--src/gui/kernel/qplatformopenglcontext.h2
-rw-r--r--src/gui/platform/unix/qunixnativeinterface.cpp4
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)