summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb
diff options
context:
space:
mode:
authorAndrew Knight <andrew.knight@intopalo.com>2015-02-09 16:19:40 +0200
committerAndrew Knight <qt@panimo.net>2015-02-17 05:09:17 +0000
commitb63c721a0e8d637dd2a34cc5d335195349443366 (patch)
tree41ef1f08438d05b4ac9d32b3248dceb1e48a3a30 /src/plugins/platforms/xcb
parentfbeeaf23fe1755bc28185781d8182ddcb4e7985a (diff)
xcb: Fix build with -no-xcb-xlib -qt-xcb
The EGL integration should not call Xlib functions in this case. Change-Id: I46656b12d603ca1b4b0b41f34c3c0e8410c91db8 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/xcb')
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp17
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.h2
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp4
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro5
4 files changed, 16 insertions, 12 deletions
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp
index e82a24539e..16d32b3235 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp
@@ -57,13 +57,7 @@ QXcbEglIntegration::~QXcbEglIntegration()
bool QXcbEglIntegration::initialize(QXcbConnection *connection)
{
m_connection = connection;
-
-#ifdef USE_XCB_XLIB
- Display *dpy = (Display *)m_connection->xlib_display();
-#else
- EGLNativeDisplayType dpy = EGL_DEFAULT_DISPLAY;
-#endif
- m_egl_display = eglGetDisplay(dpy);
+ m_egl_display = eglGetDisplay(reinterpret_cast<EGLNativeDisplayType>(xlib_display()));
EGLint major, minor;
bool success = eglInitialize(m_egl_display, &major, &minor);
@@ -101,4 +95,13 @@ QPlatformOffscreenSurface *QXcbEglIntegration::createPlatformOffscreenSurface(QO
return new QEGLPbuffer(eglDisplay(), surface->requestedFormat(), surface);
}
+void *QXcbEglIntegration::xlib_display() const
+{
+#ifdef XCB_USE_XLIB
+ return m_connection->xlib_display();
+#else
+ return EGL_DEFAULT_DISPLAY;
+#endif
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.h b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.h
index d16b8eed6a..1f7fd4fc94 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.h
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglintegration.h
@@ -65,7 +65,7 @@ public:
bool supportsThreadedOpenGL() const Q_DECL_OVERRIDE { return true; }
EGLDisplay eglDisplay() const { return m_egl_display; }
- void *xlib_display() const { return m_connection->xlib_display(); }
+ void *xlib_display() const;
private:
QXcbConnection *m_connection;
EGLDisplay m_egl_display;
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
index 6df57bcfe6..9e5b67438c 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp
@@ -61,6 +61,7 @@ void QXcbEglWindow::resolveFormat()
void *QXcbEglWindow::createVisual()
{
+#ifdef XCB_USE_XLIB
Display *xdpy = static_cast<Display *>(m_glIntegration->xlib_display());
VisualID id = QXlibEglIntegration::getCompatibleVisualId(xdpy, m_glIntegration->eglDisplay(), m_config);
@@ -72,6 +73,9 @@ void *QXcbEglWindow::createVisual()
int matchingCount = 0;
visualInfo = XGetVisualInfo(xdpy, VisualIDMask, &visualInfoTemplate, &matchingCount);
return visualInfo;
+#else
+ return QXcbWindow::createVisual();
+#endif
}
void QXcbEglWindow::create()
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro
index 082c22821a..28a572a2c9 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro
@@ -9,10 +9,7 @@ include(../gl_integrations_plugin_base.pri)
CONFIG += egl
-DEFINES += SUPPORT_X11
-#should be removed from sources
-DEFINES += XCB_USE_EGL XCB_USE_XLIB
-
+contains(QT_CONFIG, xcb-xlib): DEFINES += XCB_USE_XLIB
HEADERS += \
qxcbeglcontext.h \