diff options
author | Andrew Knight <andrew.knight@intopalo.com> | 2015-02-09 16:19:40 +0200 |
---|---|---|
committer | Andrew Knight <qt@panimo.net> | 2015-02-17 05:09:17 +0000 |
commit | b63c721a0e8d637dd2a34cc5d335195349443366 (patch) | |
tree | 41ef1f08438d05b4ac9d32b3248dceb1e48a3a30 /src | |
parent | fbeeaf23fe1755bc28185781d8182ddcb4e7985a (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')
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 \ |