summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaszlo Agocs <laszlo.agocs@digia.com>2013-09-11 13:29:24 +0200
committerAndy Nichols <andy.nichols@digia.com>2013-09-11 23:41:52 +0200
commitca3c32660ce4554f0cb0afac39f43f1168dc7bdd (patch)
treeb035dd9d490c977f55cc8444de45a6aa6db9e506
parent5ef6f0b0d985837083a6a74a03306047e9b69ff9 (diff)
downloadqtwayland-ca3c32660ce4554f0cb0afac39f43f1168dc7bdd.tar.gz
Wayland platform: Fix xcomposite-glx for GL apps on Qt 5.2
The surface format was not set properly in the client side integration, leading to mysterious errors e.g. in shader compilation. Change-Id: Id5913def1d82970680d71832ac5fadf87e0956c2 Reviewed-by: Andy Nichols <andy.nichols@digia.com>
-rw-r--r--src/plugins/platforms/qwayland-xcomposite-glx/qwaylandxcompositeglxcontext.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/platforms/qwayland-xcomposite-glx/qwaylandxcompositeglxcontext.cpp b/src/plugins/platforms/qwayland-xcomposite-glx/qwaylandxcompositeglxcontext.cpp
index 6854dc3b..d3101945 100644
--- a/src/plugins/platforms/qwayland-xcomposite-glx/qwaylandxcompositeglxcontext.cpp
+++ b/src/plugins/platforms/qwayland-xcomposite-glx/qwaylandxcompositeglxcontext.cpp
@@ -50,11 +50,21 @@
QT_BEGIN_NAMESPACE
QWaylandXCompositeGLXContext::QWaylandXCompositeGLXContext(const QSurfaceFormat &format, QPlatformOpenGLContext *share, Display *display, int screen)
- : m_display(display)
+ : m_display(display),
+ m_format(format)
{
qDebug("creating XComposite-GLX context");
+
+ if (m_format.renderableType() == QSurfaceFormat::DefaultRenderableType)
+ m_format.setRenderableType(QSurfaceFormat::OpenGL);
+
+ if (m_format.renderableType() != QSurfaceFormat::OpenGL) {
+ qWarning("Unsupported renderable type");
+ return;
+ }
+
GLXContext shareContext = share ? static_cast<QWaylandXCompositeGLXContext *>(share)->m_context : 0;
- GLXFBConfig config = qglx_findConfig(display, screen, format, GLX_WINDOW_BIT | GLX_PIXMAP_BIT);
+ GLXFBConfig config = qglx_findConfig(display, screen, m_format, GLX_WINDOW_BIT | GLX_PIXMAP_BIT);
XVisualInfo *visualInfo = glXGetVisualFromFBConfig(display, config);
m_context = glXCreateContext(display, visualInfo, shareContext, true);
qglx_surfaceFormatFromGLXFBConfig(&m_format, display, config, m_context);