summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/xcb/gl_integrations
diff options
context:
space:
mode:
authorBłażej Szczygieł <spaz16@wp.pl>2016-01-16 00:57:54 +0100
committerShawn Rutledge <shawn.rutledge@theqtcompany.com>2016-01-18 14:34:58 +0000
commite8ad49d6cba6521f20b1b08bf65d92fc81c158e4 (patch)
tree44d75ccc49ff850cfe56f18a8cbd8b687c604ea5 /src/plugins/platforms/xcb/gl_integrations
parent5ef14c52d0275e721153b15acfb0410b9889014a (diff)
xcb: Fallback to Xlib screen when glXGetCurrentDisplay() returns NULL
Change-Id: Ie25b3fac4c0224f847c77c0515894a9df84077a2 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Diffstat (limited to 'src/plugins/platforms/xcb/gl_integrations')
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp9
-rw-r--r--src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp8
2 files changed, 11 insertions, 6 deletions
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index 3412f3f3fc..22e68e3db7 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -645,9 +645,12 @@ void QGLXContext::queryDummyContext()
QScopedPointer<QSurface> surface;
Display *display = glXGetCurrentDisplay();
- const char *glxvendor = 0;
- if (display)
- glxvendor = glXGetClientString(display, GLX_VENDOR);
+ if (!display) {
+ // FIXME: Since Qt 5.6 we don't need to check whether primary screen is NULL
+ if (QScreen *screen = QGuiApplication::primaryScreen())
+ display = DISPLAY_FROM_XCB(static_cast<QXcbScreen *>(screen->handle()));
+ }
+ const char *glxvendor = glXGetClientString(display, GLX_VENDOR);
if (glxvendor && !strcmp(glxvendor, "ATI")) {
QWindow *window = new QWindow;
window->resize(64, 64);
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
index cd4949af5c..a3a8aa259b 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp
@@ -196,9 +196,11 @@ QPlatformOffscreenSurface *QXcbGlxIntegration::createPlatformOffscreenSurface(QO
if (!vendorChecked) {
vendorChecked = true;
Display *display = glXGetCurrentDisplay();
- const char *glxvendor = 0;
- if (display)
- glxvendor = glXGetClientString(display, GLX_VENDOR);
+#ifdef XCB_USE_XLIB
+ if (!display)
+ display = static_cast<Display *>(m_connection->xlib_display());
+#endif
+ const char *glxvendor = glXGetClientString(display, GLX_VENDOR);
if (glxvendor && !strcmp(glxvendor, "ATI"))
glxPbufferUsable = false;
}