From b63c721a0e8d637dd2a34cc5d335195349443366 Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Mon, 9 Feb 2015 16:19:40 +0200 Subject: xcb: Fix build with -no-xcb-xlib -qt-xcb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The EGL integration should not call Xlib functions in this case. Change-Id: I46656b12d603ca1b4b0b41f34c3c0e8410c91db8 Reviewed-by: Laszlo Agocs Reviewed-by: Jørgen Lind --- .../xcb/gl_integrations/xcb_egl/qxcbeglintegration.cpp | 17 ++++++++++------- .../xcb/gl_integrations/xcb_egl/qxcbeglintegration.h | 2 +- .../xcb/gl_integrations/xcb_egl/qxcbeglwindow.cpp | 4 ++++ .../platforms/xcb/gl_integrations/xcb_egl/xcb_egl.pro | 5 +---- 4 files changed, 16 insertions(+), 12 deletions(-) (limited to 'src/plugins/platforms/xcb') 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(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(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 \ -- cgit v1.2.3